Class: OpenWFE::Extras::SqsParticipant

Inherits:
Object
  • Object
show all
Includes:
LocalParticipant
Defined in:
lib/openwfe/extras/participants/sqsparticipants.rb

Overview

This participant dispatches its workitem to an Amazon SQS queue.

If the queue doesn’t exist, the participant will create it.

a small example :

# ...
engine.register_participant(:sqs0, SqsParticipant.new("workqueue0"))
# ...

For more details about SQS : aws.amazon.com

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queue_name, host_name = nil) ⇒ SqsParticipant

Builds an SqsParticipant instance pointing to a given queue. (Refer to the SQS service on how to set up AWS key ids).

By default the host_name is ‘queue.amazonaws.com’



78
79
80
81
82
83
84
85
86
87
88
# File 'lib/openwfe/extras/participants/sqsparticipants.rb', line 78

def initialize (queue_name, host_name=nil)

    @queue_name = queue_name

    @queue_service = Rufus::SQS::QueueService.new host_name

    @queue_service.create_queue @queue_name
        # make sure the queue exists

    @queue = @queue_service.get_queue @queue_name
end

Instance Attribute Details

#queueObject (readonly)

Returns the value of attribute queue.



70
71
72
# File 'lib/openwfe/extras/participants/sqsparticipants.rb', line 70

def queue
  @queue
end

#queue_serviceObject (readonly)

Returns the value of attribute queue_service.



70
71
72
# File 'lib/openwfe/extras/participants/sqsparticipants.rb', line 70

def queue_service
  @queue_service
end

Instance Method Details

#consume(workitem) ⇒ Object

The method called by the engine when it has a workitem for this participant.



94
95
96
97
98
99
100
101
102
103
# File 'lib/openwfe/extras/participants/sqsparticipants.rb', line 94

def consume (workitem)

    msg = encode_workitem workitem

    msg_id = @queue_service.put_message @queue, msg

    ldebug do 
        "consume() msg sent to queue #{@queue.path} id is #{msg_id}"
    end
end