4.2. 接收消息
这个客户端程序使用 <connection-url> 连接到服务器,为源 <address> 创建一个接收器,并在其终止或到达 <count> 信息前接收信息。
示例:接收消息
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 命令调用它。如需更多信息,请参阅 第 3 章 入门。
$ ruby receive.rb amqp://localhost queue1