java - 如何在Java中将JMSType设置为订阅者?

标签 java push-notification activemq

以下是我如何通过 OpenWire 协议(protocol)订阅消息队列:

import java.io.FileWriter;
import java.io.PrintWriter;
import javax.jms.*;


//..........
subscriberPublishSubscribe = new Subscriber();
subscriberPublishSubscribe.create(URL, "login", "pass", TOPICNAME, SUBSCRIPTIONID);

//.......
Connection connection = factory.createConnection();
connection.setClientID(clientId);
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic(topicName);
messageConsumer = session.createDurableSubscriber(topic, subId);
JMSMessageListener listener = new JMSMessageListener();
messageConsumer.setMessageListener(listener);
connection.start();

如何使用 JMSType 类过滤消息?这是我可能需要使用的代码:

Message msg = session.createMessage();
msg.setJMSType("some_jms_type");

// What's next?

再次强调,我是订阅者,而不是生产者,因此我只想接收仅具有特定JMSType的消息。

最佳答案

从您的问题陈述中有点不清楚,但听起来您想根据消息的设置 JMSType 来过滤消息,这是使用 JMS selector 完成的表达式传递到 createConsumer 方法中。

您创建选择器表达式来过滤您想要的内容,例如:

JMSType = 'car' AND color = 'blue' AND weight > 2500

但请记住,消息代理不是数据库,将其视为数据库通常会导致失败。

快速 Google 一下“JMS 消息选择器”将为您提供有关该主题的大量阅读内容。

关于java - 如何在Java中将JMSType设置为订阅者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34975191/

相关文章:

java - Android 应用程序在闪屏后崩溃

javascript - 如何允许用户在阻止后启用推送通知?

javascript - "Push"通知用户

jms - 对 Apache Camel 和 ActiveMQ 感到困惑

java - tcp 连接卡在 close_wait java

java - 控制 Twilio 调用的事件

java - activemq jndi tomcat错误

wcf - Duplex or request-reply with Apache ActiveMQ WCF Binding 配置问题

java - 轻松使用 CursorLoader

android - 当我连接到我的 Wifi 时,在 Android 上收不到推送通知