首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ActiveMQ JMS将消息发送到使用者子集

ActiveMQ JMS将消息发送到使用者子集
EN

Stack Overflow用户
提问于 2020-08-20 14:53:05
回答 1查看 38关注 0票数 1

我的问题是,假设我们有10个消费者订阅了这个主题。从生产者的角度,我只需要向5个消费者发送一条消息。

假设有5个消费者具有唯一的id 1,2,3,4,5,我在生产者端使用字符串连接"1,2,3,4,5“包括了这一点,我在

设备= "1,2,3,4,5“个messagePostProcessor.setStringProperty("deviceIds",设备);

如何作为选择器在消费者端处理它。因为我可能会根据消费者的需求情况给5个消费者,10个消费者,或者100个消费者中的50个消费者。

从生产者的角度,我们让消费者的id发送出去。而是如何在消费者身上识别或处理它。

EN

回答 1

Stack Overflow用户

发布于 2020-08-20 18:31:04

正如在jms-selectorsjms-messageactivemq-message中提到的,您不能将数组对象用作jms消息的选择器属性。无论如何,您可以尝试的内容如下所示。

我想你的设备I应该是这样的。例如:'P8O4O18143JA3068','M0A0H8081436A22N','A0N0G8081436A2DI‘等。

因此,在从生产者发送消息时,如下所示。

代码语言:javascript
运行
复制
String messageBody = "Message body that you want to send."
String messageSelector = "P8O4O18143JA3068, M0A0H8081436A22N, A0N0G8081436A2DI";
TextMessage message = session.createTextMessage(messageBody);
message.setStringProperty("deviceIds", messageSelector);
producer.send(message);

并且,当在消费者中接收到消息时,这样做。

代码语言:javascript
运行
复制
String myDeviceId = "P8O4O18143JA3068";
String messageSelector = "deviceIds LIKE '%" + myDeviceId + "%'";
consumer = session.createConsumer(destination, messageSelector);
Message message = consumer.receive()

因此,只有当消息属性中存在与消息相关联的deviceId时,才能允许消费者选择/接收消息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63499761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档