Chapter 4. Examples
This chapter demonstrates the use of AMQ Ruby through example programs.
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.
$ 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.
$ ruby receive.rb amqp://localhost queue1

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.