1

我正在使用 RabbitMQ,我希望在服务器端每次 Exchange 收到消息时进行计算。

我有一个评级队列,当收到太多差评(比如说超过十个)时,应该通知消费者。

服务器端逻辑有哪些选择?我一直在阅读有关 Spring RabbitMQ 的信息,但不确定?

4

1 回答 1

1

基于消息的系统并没有真正的“服务器端”。相反,RabbitMQ 服务位于某个地方,可以将消息传递给任意数量的生产者和消费者。根据您可用的硬件以及正在执行的处理量,这些可能都在同一台服务器上,或者您可能拥有专门用于每个任务的资源。

基于消息内容的计算是消费者的工作,只要您使用所有人都可以理解的消息序列化(例如 JSON、XML),就可以用任何您觉得舒服的语言编写它。对于一个简单的计数器,您可能不需要太多的框架来提取您需要的数据。

任意数量的队列都可以接收来自同一个 Exchange 的消息副本,因此您可以从该 Exchange 中提取所有消息并仅计算差评,或者您可以将评级放入“路由键”并使用“主题交换” " 对它们进行预过滤。

之后,您可以使用像 Redis 这样的简单内存存储来存储计数器,当它达到限制时,可以在该消费者中对其进行操作,或者将消息发布到新的交换器以供不同的消费者处理。

于 2015-05-17T18:29:04.860 回答