Carrot
A synchronous amqp client. Based on Aman's amqp client:
[http://github.com/tmm1/amqp/tree/master] (http://github.com/tmm1/amqp/tree/master)
Motivation
This client does not use eventmachine so no background thread necessary. As a result, it is much easier to use from script/console and Passenger. It also solves the problem of buffering messages and ack responses. For more details see [this thread] (http://groups.google.com/group/ruby-amqp/browse_thread/thread/fdae324a0ebb1961/fa185fdce1841b68).
There is currently no way to prevent buffering using eventmachine. Support for prefetch is still unreliable.
Example
require 'secure_carrot'
q = Carrot.queue('name')
10.times do |num|
q.publish(num.to_s)
end
puts "Queued #{q.message_count} messages"
puts
while msg = q.pop(:ack => true)
puts "Popping: #{msg}"
q.ack
end
Carrot.stop
Encrypting and Decrypting messages
Symmetric encryption is used here which means the same password is used for encrypting
and decrypting the message.
puts "Encrypt and send a message"
q.send_message('Hello Carrot', :password => 'secure')
#=> "qrbSyJHx6JhBQtXKsWvm/A==\n"
puts "Receiving and decrypting message. If you don't specify the password you will read an encrypted message."
q.receive_message(:password => 'secure')
#=> "Hello Carrot"
LICENSE
Copyright (c) 2009 Amos Elliston, Geni.com; Published under The MIT License, see License