“openwferu-sqs” is an open source (BSD) library for accessing Amazon SQS via its REST API (thus messages up to 256 KB can be exchanged).
OpenWFEru, as a workflow engine may be configured to use Amazon SQS as an online worklist system (queue for storing / transmitting workitems). That’s the why behind this library.
This web page explains how to use openwferu-sqs outside of the OpenWFEru context.
It’s available in its own gem :
$ sudo gem install openwferu-sqs
The gem can also be downloaded from RubyForge.
You can directly view the source.
openwferu-sqs expects that your Amazon Acces Key Id and your Amazon Secret Access Key Id to be available in the environment variables $AMAZON_ACCESS_KEY_ID and $AMAZON_SECRET_ACCESS_KEY respectively.
You can trigger a simple command line client via :
$ ruby sqs.rb
or maybe
$ ruby path/to/your/unpacked/sqs.rb
and it should spit
env variables $AMAZON_ACCESS_KEY_ID and $AMAZON_SECRET_ACCESS_KEY are not set
if you haven’t set the two environment variables. Else it will output
Usage: sqs.rb [options] {action} [queue_name] [message_id]
known actions are :
- 'cq' (create_queue)
- 'create_queue' (create_queue)
- 'delete_message' (delete_message)
- 'delete_queue' (delete_queue)
- 'dm' (delete_message)
- 'dq' (delete_queue)
- 'flush_queue' (flush_queue)
- 'fq' (flush_queue)
- 'get_message' (get_message)
- 'gm' (get_message)
- 'list_queues' (list_queues)
- 'lq' (list_queues)
- 'pm' (put_message)
- 'puts_message' (put_message)
options are :
-H, --host AWS queue host
-h, --help displays this help / usage
-b, --base64 encode/decode messages with base64
Such operations are then possible :
sonanda:~/openwfe-ruby mettraux$ ruby lib/openwfe/extras/util/sqs.rb cq totoqueue
create_queue...
"http://queue.amazonaws.com/A2Y5DYCG8CQLUR/totoqueue"
sonanda:~/openwfe-ruby mettraux$ ruby lib/openwfe/extras/util/sqs.rb pm totoqueue
put_message...
welcome to SQS via OpenWFERU
"0R2Y01B0DTE4WW9MPX48|C9345G3K6XDQVZ7R7FH1|RFZ53J3DZ6KQ18B66T50"
sonanda:~/openwfe-ruby mettraux$ ruby lib/openwfe/extras/util/sqs.rb lq
list_queues...
[#<SQS::Queue:0x6ec058
@host="queue.amazonaws.com",
@name="johntest0",
@path="/A225DYCG8CQLUR/johntest0",
@queue_service=
#<SQS::QueueService:0x6f093c @queue_host="queue.amazonaws.com">>,
#<SQS::Queue:0x6ead70
@host="queue.amazonaws.com",
@name="totoqueue",
@path="/A225DYCG8CQLUR/totoqueue",
@queue_service=
#<SQS::QueueService:0x6f093c @queue_host="queue.amazonaws.com">>]
sonanda:~/openwfe-ruby mettraux$ ruby lib/openwfe/extras/util/sqs.rb gm totoqueue
get_message...
[#<SQS::Message:0x6e670c
@message_body="welcome to SQS via OpenWFERU",
@message_id="0R2Y01B0DTEWW3SMPX48|C9445G3K2XDCVZ7R7FH1|RFZ5TJ3DZWKQ18B66T50",
@queue=
#<SQS::Queue:0x6ec4b8
@host="queue.amazonaws.com",
@name="totoqueue",
@path="/A225DYCG8CQLUR/totoqueue",
@queue_service=
#<SQS::QueueService:0x6f0900 @queue_host="queue.amazonaws.com">>>]
sonanda:~/openwfe-ruby mettraux$ ruby lib/openwfe/extras/util/sqs.rb fq totoqueue
flush_queue...
1
sonanda:~/openwfe-ruby mettraux$ ruby lib/openwfe/extras/util/sqs.rb dq totoqueue
delete_queue...
true
The rdoc of openwferu-sqs is available online, the method names and their parameters should make the usage obvious, but here is a short example :
require 'rubygems'
require 'openwfe/extras/util/sqs'
qs = SQS::QueueService.new
#
# as for the command line client, openwferu-sqs expects the environment
# variables $AMAZON_ACCESS_KEY_ID and $AMAZON_SECRET_ACCESS_KEY to be set
# else an error will be raised
qs.create_queue(:myqueue)
msg_id = qs.put_message(:myqueue, "my message")
msg = qs.get_message(:yamltest, msg_id)
Please use the OpenWFEru user mailing list and the OpenWFEru trackers for feedback on openwferu-sqs.
If you don’t need it :
$ sudo gem uninstall openwferu-sqs