Lou*_*ise 5 rabbitmq bunny rabbitmq-exchange
我使用 Bunny (Ruby) 发布 RabbitMQ 消息,如下所示:
x.publish("Message !"+n.to_s, :routing_key => 'mychannel')
Run Code Online (Sandbox Code Playgroud)
并像这样订阅:
ch = conn.create_channel
x = ch.topic('fling',durable: true)
q = ch.queue("")
q.bind(x, :routing_key => 'mychannel')
puts "Waiting for messages."
q.subscribe( :block => true) do |delivery_info, properties, body|
puts " [x] Received #{body}, message properties are #{properties.inspect}"
Run Code Online (Sandbox Code Playgroud)
一旦我启动订阅者,它就会立即接收发送的任何消息。但是,如果我在没有启动订阅者的情况下发送消息,则当我启动订阅者时不会收到消息(无论发送者是否仍在推送消息)。
当没有订阅者在监听时,是否可以返回队列并接收过去发送的消息?
每次启动消费者时,您都会创建一个新队列!因此,当您重新启动消费者时,新队列会收到新消息,但没有以前的消息。
做这个:
q = ch.queue("myqueue",durable: true)
Run Code Online (Sandbox Code Playgroud)
而不是这个:
q = ch.queue("")
Run Code Online (Sandbox Code Playgroud)
然后,一旦您重新启动消费者,它将立即尽快获取所有备份的消息。
| 归档时间: |
|
| 查看次数: |
7506 次 |
| 最近记录: |