Rabbit MQ 消费者有办法获取 init 上的最新消息吗?

问题描述 投票:0回答:2

我正在寻找替换内部键值存储和调度系统,并且我不断听说 RabbitMQ 可能是一个解决方案。

我了解使用队列发送和接收消息,并且这些事件是由创建消息的生产者和接收消息的消费者触发的。

但是如果在发送消息后创建消费者会发生什么?消费者可以询问队列最后一条消息是什么吗?如果没有,我是否需要包含某种数据库来存储这些消息?或者我正在寻找其他技术?

一个用例是我想要一个 GUI 来获取/设置本地网络上其他应用程序使用的参数。在初始化时,GUI 需要知道最后的值是什么。

在尝试回答我自己的问题时,RabbitMQ 可能不是我正在寻找的。我可能想改用 Kafka,它将最新的键:值对存储在表中。或者我可能想使用 Redis。你觉得怎么样?

感谢您的协助。

rabbitmq
2个回答
0
投票

我想我为我的问题找到了满意的答案。我正在寻找创建一个请求-答复模型,RabbitMQ 能够很好地处理该模型。打开 GUI 后,它会向其他进程发送对某个变量的请求,这些变量存储在内存或数据库中。该进程以请求的数据进行响应。够简单的。


-3
投票

我建议将rabbitmq与redis集成,我将这种方法实现为poc。我来处理这个案子没问题。

Redis 似乎是一个简单的选择。它能够存储每个参数的最新状态并允许快速检索。但是,如果您的系统还需要解耦、异步消息传递用于其他目的,您可能仍然会考虑将 RabbitMQ 与 Redis 结合使用,其中 RabbitMQ 处理消息传递,Redis 维护状态。

有关rabbitMQ的更多详细信息,请查看此文档 https://www.rabbitmq.com/documentation.html

有关redis的更多详细信息,请查看 https://redis.io/docs/

这是rabbitmq与redis的sudo代码

总体架构

  • 应用程序(生产者):这些是生成消息的应用程序,例如参数更新。
  • RabbitMQ(消息代理):它从生产者接收消息并将它们路由到适当的队列。
  • 工作服务(消费者):这些服务使用来自 RabbitMQ 队列的消息并使用最新的键值对更新 Redis。
  • Redis(数据存储):存储每个键值对的最新状态。
  • GUI应用程序:直接查询Redis以获取初始化时参数的最新状态。
© www.soinside.com 2019 - 2024. All rights reserved.