如何从RabbitMQ获取旧消息?

如何从RabbitMQ获取旧消息?,rabbitmq,rabbitmq-exchange,bunny,Rabbitmq,Rabbitmq Exchange,Bunny,我使用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 me

我使用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}"
然后像这样订阅:

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延迟消息多长时间?”它会延迟消息,直到您收集它们为止!一根绳子有多长。。。