'mychannel') 并像这-6ren">
gpt4 book ai didi

rabbitmq - 我如何从 RabbitMQ 获取旧消息?

转载 作者:行者123 更新时间:2023-12-04 02:16:07 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com