RabbitMQ:服务器端计算每个收到的消息

RabbitMQ: server side Calculation for every received Message

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

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

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

没有真正的 "server side" 基于消息的系统;相反,RabbitMQ 服务位于某处并在任意数量的生产者和消费者之间传递消息。根据您可用的硬件和正在执行的处理量,这些都可以在同一台服务器上,或者您可以为每项任务分配专用资源。

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

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

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