当前位置: 首页 > 知识库问答 >
问题:

RabbitMQ-发布到队列或Exchange

上官飞
2023-03-14

一种方法是声明队列并将GenerateInvoice消息发布到该队列,并让所有使用者从该队列中消费。这将在不同的消费者之间分发消息。

我不清楚,如果上面的操作是正确的,或者最佳实践是将消息传递到Exchange而不是直接发布到队列。使用Exchange时,我必须确保在生产者创建Exchange之后声明队列,然后才开始发布消息。否则,没有队列接收到消息,并且消息将丢失。

共有1个答案

吕冠宇
2023-03-14

声明队列、将GenerateInvoice消息发布到队列并为队列拥有多个使用者将在此场景中起作用。

发布到队列的消息不会丢失,如果没有使用者,它们将保留在RMQ上。唯一的事情是确保在消息发布之前声明队列。

Java示例:

channel.queueDeclare(QUEUE_NAME, false, false, false, null);
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { });
 类似资料:
  • 我正在尝试设置到系统中所有节点的广播消息。当一个新节点加入系统时,它会向其他所有节点发布一条消息来宣布它的加入。我设计的方式是,存在一个交换,所有节点都将绑定到它自己的队列。每当一个新节点加入系统时,它就会将其队列绑定到exchange并将消息发布到exchange。所有节点都会收到这个消息(包括自身),所有其他节点(除了这个消息)都会发送一个“ACK”消息,这样新节点就会了解系统中可用的节点。但

  • 我们有一个使用NServicebus的本地Web应用程序,我们希望将队列移动到Azure(作为完全基于云的更大迁移路径的一部分)。我正试图建立一个POC,但似乎无法让它工作。 我有以下配置: 在我的应用程序中,我将总线配置为: 当我尝试发布到队列时,我得到以下消息: 我有点不知所措,我尝试了在网上找到的几种不同的示例,但我觉得我对azure知识的缺乏阻碍了我的发展。我从这个问题中提取了大部分配置:

  • 我有Spring Cloud Stream Rabbit项目,它将消息发送到兔子交换以防流中出现错误。我想定期(5分钟一次)从队列中监听并处理它。 有什么方法可以让我有一个可轮询的?或者我可以配置一个RabbitMQ,这样我就可以用轮询器构建一个?

  • 在队列选项卡的rabbitMQ web界面上,我看到了“概述”面板,我在其中找到了以下内容: 排队消息: 准备好了 未确认 总数 我猜“总数”是多少。但什么是“准备就绪”和“未确认”?“准备好了”——传递给消费者的信息?“未确认”-? 消息费率: 发表 交付 重新交付 承认 这些信息是什么?尤其是“重新交付”和“确认”?这是什么意思?

  • 问题内容: 我需要一个可以在重新启动的RabbitMQ服务器交换上发现队列的python客户端,然后启动一个客户端以继续使用每个队列中的消息。如何从某些RabbitMQ兼容的python api /库中发现队列? 问题答案: 据我所知,没有任何办法可以做到这一点。这与Python无关,但是因为AMQP没有定义任何队列发现方法。 无论如何,在AMQP中,都是由客户端(消费者)声明队列的:发布者使用路

  • 我已经安装了以下版本的芹菜和拉比MQ- 芹菜3.1。6 rabbitmq 3.1。1. 我可以从PHP向默认队列发布任务- 我的worker模块是用python编写的- 我像这样管理芹菜工人和客户- 这很有效。我在终端窗口1中看到以下输出: 但是我想要不同的队列。为了演示,假设我只需要一个名为demo的队列。所以我像这样管理我的芹菜工人- 但它不起作用。任务未得到执行。我猜这可能是因为PHP代码将