RabbitMQ消息传递 - 初始化消费者

时间:2012-05-14 14:44:39

标签: rabbitmq

我想使用RabbitMQ持续向任何可能正在收听的消费者广播对象的状态。我想设置它,所以当消费者订阅时它将获取最后一个可用状态... 这可能吗?

2 个答案:

答案 0 :(得分:6)

使用自定义上一次值缓存交换: 例如 https://github.com/squaremo/rabbitmq-lvc-plugin

最后值缓存交换

使用RabbitMQ的可插拔交换类型功能,这是一个非常简单的最后一个值缓存实现。

最后一个值缓存旨在解决以下问题:说我正在使用消息传递向客户端发送一些更改值的通知;现在,当一个新客户端连接时,它将不会知道该值,直到它发生变化。

最后一次值交换就像直接交换一样(比较绑定密钥与路由密钥的相等性);但是,它还跟踪每个路由密钥发布的最后一个值,并且当绑定队列时,它会自动将绑定密钥的最后一个值排入队列。

答案 1 :(得分:1)

可以使用Recent History Custom Exchange。它表示它会将最后20条消息放入队列中,因此如果它可以配置,您可以将其更改为最后一条消息,并且您已完成。

如果这不起作用,即数字固定为20,那么您可能必须处理队列中的前19条消息并从20日开始处于状态。这是一个令人讨厌的工作,但是你知道参数总是20,这应该没问题。

最后,如果这不适合你,也许你会让消费者等到收到第一个状态,假设状态是合理频繁播放的。收到第一个状态后,启动应用程序的其余部分。我在这里假设您在做其他事情之前需要状态。