Chapter 4. Examples This chapter demonstrates the use of AMQ Ruby through example programs. For more examples, see the AMQ Ruby example suite and the Qpid Proton Ruby examples . 4.1. Sending messages This client program connects to a server using <connection-url> , creates a sender for target <address> , sends a message containing <message-body> , closes the connection, and exits. Example: Sending messages require 'qpid_proton' class SendHandler < Qpid::Proton::MessagingHandler def initialize(conn_url, address, message_body) super() @conn_url = conn_url @address = address @message_body = message_body end def on_container_start(container) conn = container.connect(@conn_url) conn.open_sender(@address) end def on_sender_open(sender) puts "SEND: Opened sender for target address '#{sender.target.address}'\n" end def on_sendable(sender) message = Qpid::Proton::Message.new(@message_body) sender.send(message) puts "SEND: Sent message '#{message.body}'\n" sender.close sender.connection.close end end if ARGV.size == 3 conn_url, address, message_body = ARGV else abort "Usage: send.rb <connection-url> <address> <message-body>\n" end handler = SendHandler.new(conn_url, address, message_body) container = Qpid::Proton::Container.new(handler) container.run Running the example To run the example program, copy it to a local file and invoke it using the ruby command. For more information, see Chapter 3, Getting started . USD ruby send.rb amqp://localhost queue1 hello 4.2. Receiving messages This client program connects to a server using <connection-url> , creates a receiver for source <address> , and receives messages until it is terminated or it reaches <count> messages. Example: Receiving messages require 'qpid_proton' class ReceiveHandler < Qpid::Proton::MessagingHandler def initialize(conn_url, address, desired) super() @conn_url = conn_url @address = address @desired = desired @received = 0 end def on_container_start(container) conn = container.connect(@conn_url) conn.open_receiver(@address) end def on_receiver_open(receiver) puts "RECEIVE: Opened receiver for source address '#{receiver.source.address}'\n" end def on_message(delivery, message) puts "RECEIVE: Received message '#{message.body}'\n" @received += 1 if @received == @desired delivery.receiver.close delivery.receiver.connection.close end end end if ARGV.size > 1 conn_url, address = ARGV[0..1] else abort "Usage: receive.rb <connection-url> <address> [<message-count>]\n" end begin desired = Integer(ARGV[2]) rescue TypeError desired = 0 end handler = ReceiveHandler.new(conn_url, address, desired) container = Qpid::Proton::Container.new(handler) container.run Running the example To run the example program, copy it to a local file and invoke it using the ruby command. For more information, see Chapter 3, Getting started . USD ruby receive.rb amqp://localhost queue1

Commands:
require 'qpid_proton' class SendHandler < Qpid::Proton::MessagingHandler def initialize(conn_url, address, message_body) super() @conn_url = conn_url @address = address @message_body = message_body end def on_container_start(container) conn = container.connect(@conn_url) conn.open_sender(@address) end def on_sender_open(sender) puts "SEND: Opened sender for target address '#{sender.target.address}'\n" end def on_sendable(sender) message = Qpid::Proton::Message.new(@message_body) sender.send(message) puts "SEND: Sent message '#{message.body}'\n" sender.close sender.connection.close end end if ARGV.size == 3 conn_url, address, message_body = ARGV else abort "Usage: send.rb <connection-url> <address> <message-body>\n" end handler = SendHandler.new(conn_url, address, message_body) container = Qpid::Proton::Container.new(handler) container.run
ruby send.rb amqp://localhost queue1 hello
require 'qpid_proton' class ReceiveHandler < Qpid::Proton::MessagingHandler def initialize(conn_url, address, desired) super() @conn_url = conn_url @address = address @desired = desired @received = 0 end def on_container_start(container) conn = container.connect(@conn_url) conn.open_receiver(@address) end def on_receiver_open(receiver) puts "RECEIVE: Opened receiver for source address '#{receiver.source.address}'\n" end def on_message(delivery, message) puts "RECEIVE: Received message '#{message.body}'\n" @received += 1 if @received == @desired delivery.receiver.close delivery.receiver.connection.close end end end if ARGV.size > 1 conn_url, address = ARGV[0..1] else abort "Usage: receive.rb <connection-url> <address> [<message-count>]\n" end begin desired = Integer(ARGV[2]) rescue TypeError desired = 0 end handler = ReceiveHandler.new(conn_url, address, desired) container = Qpid::Proton::Container.new(handler) container.run
ruby receive.rb amqp://localhost queue1