24得票3回答
何时使用直接交换机而不是扇形交换机

据我所知,直接交换机没有适当的用例,因为你可以用扇出交换机做任何直接交换机能做的事情,只是更加灵活。具体来说,在阅读《RabbitMQ实战》时,作者多次提到了这样的用例 - “假设当用户上传图片时,您需要生成缩略图。但稍后市场部门还告诉您要为上传照片奖励积分。使用RabbitMQ,您只需创建另...

7得票2回答
RabbitMQ“僵尸”消费者

我正在使用EC2的spot instances从RabbitMQ队列中消费。每个任务需要几秒钟,并需要手动进行“ack”确认。 当实例终止时会出现问题。没有时间进行AMQP消费者的干净关闭,因此我还是会发现RabbitMQ服务器仍然认为已经死掉的消费者存在。它不会重新传递他们的作业,并且仍然...

7得票2回答
RabbitMQ的断开管道错误或丢失消息

使用pika库的BlockingConnection连接到RabbitMQ时,发布消息时偶尔会出现错误: 致命套接字错误:error(32, 'Broken pipe') 这是一个非常简单的子进程,从内存队列中取出一些信息并将一个小的JSON消息发送到AMQP。只有当系统几分钟内没有发送任...

10得票1回答
RabbitMQ/AMQP 中的消息分组

ActiveMQ / JMS内置机制,可确保共享公共头(即JMSXGroupID头)的消息在使用竞争消费者模式时始终由队列的同一消费者消耗。队列的消费者对实际头值完全不知情,因为确保具有公共头的消息是在服务器端而非消费者端执行的。有关此功能的详细信息,请参见http://activemq.ap...

7得票1回答
RabbitMQ - 按优先级消费多个队列

我有一个升级我们生产者/消费者基础设施的需求。 当前设置如下: 一组具有不同优先级(低、中、高)的队列。 当我们的客户生成任务时(如处理图像): 生产者将消息添加到相关队列中。 其中一个工作进程对其进行处理。 这种方法的问题在于,如果一个客户生成大量任务,则可能会占用队列中所有...

7得票1回答
微服务、AMQP和服务注册/发现

我正在学习微服务架构,有一个问题让我感到疑惑。 对于基于REST的微服务,使用(后端)服务发现来使请求方法可用是可以接受的。我们需要知道服务(或至少服务器集群的前端)在哪里,才能发出请求并得到响应。因此,在这种情况下,能够发现IP:端口是有意义的。 但是当处理基于AMQP的微服务时,使用服...

7得票1回答
AMQP中持久性和耐久性的概念混淆

对于这两个术语有些困惑,我在想为什么需要一个持久化消息但是短暂(非持久化)队列呢?毕竟,如果代理重新启动并且队列没有被恢复,那么恢复的消息将会浪费。

7得票2回答
AMQP中每个队列的唯一消息是什么?

这与这个问题类似,但有点不同:根据规范,AMQP消息的消息ID应由应用程序自己设置,因此理论上我可以使用它来保证某种程度的唯一性,对吗? 我的主要问题是:在哪个范围内可以保证该消息ID是唯一的?仅针对特定队列中当前排队的消息?所有队列?整个宇宙?:-) 这种行为是否标准化?我打算在这里使用...

26得票3回答
从zmq.error.ZMQError中恢复:地址已在使用中

在使用 ZMQ 进行 PAIR(非阻塞的客户端服务器)连接时,我按下了 Ctrl-C。后来,当我尝试运行 REQ-REP(阻塞的客户端单服务器连接)模式时,我一直收到 Address already in use 错误。我已经尝试使用 netstat -ltnp | grep :<my ...

16得票4回答
如何在RabbitMQ中撤回一条消息?

我有类似RabbitMQ的工作队列,当收到取消任务的请求时,我想撤销那些尚未开始处理的任务(它们的消息还没有被ack),这相当于从它们被路由到的队列中撤回这些消息。 在AMQP或RabbitMQ API中我没有找到这个功能;也许我没有搜索得够好?还是说我需要使用一种解决方法(虽然不难,但还是...