作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
'mychannel') 并像这-6ren">
我正在使用 Bunny (Ruby) 像这样发布 RabbitMQ 消息:
x.publish("Message !"+n.to_s, :routing_key => 'mychannel')
并像这样订阅:
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}"
一旦我启动订阅者,它会立即接收发送的所有消息。但是,如果我在不启动订阅者的情况下发送消息,则在我启动订阅者时不会收到消息(无论发件人是否仍在推送消息)。
当没有订阅者在收听时,是否可以通过队列返回并接收过去发送的消息?
最佳答案
每次启动消费者时,您都会创建一个新队列!因此,当您重新启动消费者时,新队列会收到新消息,但没有以前的消息。
这样做:
q = ch.queue("myqueue",durable: true)
而不是这个:
q = ch.queue("")
然后,只要您重新启动消费者,它就会立即以最快的速度获取所有备份的消息。
关于rabbitmq - 我如何从 RabbitMQ 获取旧消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33546568/
我是一名优秀的程序员,十分优秀!