我的问题是,假设我们有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发送出去。而是如何在消费者身上识别或处理它。
发布于 2020-08-20 18:31:04
正如在jms-selectors、jms-message和activemq-message中提到的,您不能将数组对象用作jms消息的选择器属性。无论如何,您可以尝试的内容如下所示。
我想你的设备I应该是这样的。例如:'P8O4O18143JA3068','M0A0H8081436A22N','A0N0G8081436A2DI‘等。
因此,在从生产者发送消息时,如下所示。
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);
并且,当在消费者中接收到消息时,这样做。
String myDeviceId = "P8O4O18143JA3068";
String messageSelector = "deviceIds LIKE '%" + myDeviceId + "%'";
consumer = session.createConsumer(destination, messageSelector);
Message message = consumer.receive()
因此,只有当消息属性中存在与消息相关联的deviceId时,才能允许消费者选择/接收消息。
https://stackoverflow.com/questions/63499761
复制相似问题