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

nodejs rhea npm for amqp无法在activemq artemis中的地址上创建订阅队列

柯阳曦
2023-03-14

我有一个地址“pubsub.foo”已经在broker.xml中配置为多播。

<address name="pubsub.foo">
   <multicast/>
</address>

根据Artemis文档:

当客户端连接到具有多播元素的地址时,将自动为客户端创建客户端的订阅队列。

我正在创建一个简单的实用程序,使用rhea AMQP Node.js npm将消息发布到地址。

var connection = require('rhea').connect({ port: args.port, host: args.host, username:'admin', password:'xxxx' });

var sender = connection.open_sender('pubsub.foo');
sender.on('sendable', function(context) {
    var m = 'Hii test' 
    console.log('sent ' + m);
    sender.send({body:m});
    connection.close();
});

我启用了调试日志,在运行客户机代码时,我看到如下所示的消息。

2020-02-03 22:43:25,071 DEBUG [org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl] Message org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage@68933e4b is not going anywhere as it didn't have a binding on address:pubsub.foo

我还尝试了该主题的不同变体,例如client1.pubsub.foopubsub.foo::client1,但是从客户机代码中看不到结果。请分享你的想法。我是ActiveMQ Artemis的新手。

共有1个答案

雍骏俊
2023-03-14

你所观察到的实际上是预期的行为。

不幸的是,您引用的文档并不那么清楚。当它说将创建订阅队列以响应客户端的连接时,它实际上是指订阅者,而不是生产者。这就是它创建订阅队列的原因。多播地址(以及一般的发布/订阅)的语义规定,当没有订阅者时发送的消息将被删除。因此,您需要创建订阅服务器,然后发送消息。

如果您想要不同的语义,那么我建议您使用选播。

 类似资料:
  • 问题内容: 我一直在尝试可以在网上找到的所有内容,但没有任何效果。希望大家能看到新的问题。这是我第一次使用ActionCable,在本地一切正常,但是当推送到heroku时。我的日志没有像我的开发服务器那样显示任何可操作的订阅: 在发送消息时,我确实看到了,但没有将它们追加,这是在猜测是否意味着未访问/调用该方法? 我确实在heroku的日志中注意到它说,开发人员正在localhost:3000监

  • 我收到了一个关于这个问题的建议,一个评论,说我可能没有我需要的交换,因为我的队列已经存在。于是,我就全部手动删除了。 但是,在重新部署应用程序时,我发现所有队列都有以下异常: 我不确定这意味着什么,因为我显然想要创建队列<code>myInput。组,它似乎在抱怨它不存在。。。 我也检查了这个问题,我的问题可能是权限。但我应该有它们——否则我相信我无法删除队列...... 你能给我一个解决方案吗?

  • 如何在AWS CloudFormation中创建Amazon SQS队列并订阅Amazon SNS主题? SNS主题名=T1 SQS队列名称=Q1 我需要一个JSON或YAML格式的模板 请帮帮我。

  • 创建一个条纹客户非常容易,将一张卡与该客户关联起来,然后随时向他们收费。然而,使用Laravel出纳之后,在任何时候订阅用户的计划都不那么容易。 当用户在“我的设置”中添加卡时,会生成卡令牌。我已尝试在此时存储令牌,并在用户希望更新其订阅时使用它,但出现错误:

  • 我需要创建对的订阅,该订阅在第一次调用时立即被处理掉。 有没有像这样的东西: 我的用例是,我正在一个快速路由处理程序中创建一个订阅,每个请求都会多次调用该订阅。

  • 参考Link,我使用JMS ActiveMQ SpringBoot创建了持久订阅者。我还使用UUID.randomUUID()生成了惟一的客户机ID。toString()。然而,在启动订户(接收器)时,应用程序抛出以下警告消息 请帮我删除上述警告信息。 Receiver.java 学生.java SendMessageApplication.java 主题发送消息.java