目前看来,Azure服务总线不支持JMS中可用的消息选择器选项。何时支持?仅供参考,我们正在使用apache qpid JMS api消耗来自azure服务总线的消息。
使用Apache Qpid的JMS API,我们为azure服务总线主题和队列创建了消息生产者和使用者。我们在JMS中尝试了消息选择器选项,但是azure服务总线似乎并未基于这些选项过滤消息。想知道何时支持?
创建一个名为topicname的主题
Topic topic = session.createTopic("topicname");
// set filter options using message selector
String filterOption = "country = 'US' AND state = 'California'"
MessageConsumer consumer = session.createConsumer(topic,filterOption);
TopicSession topicSession = topicConn.createTopicSession(false,
Session.AUTO_ACKNOWLEDGE);
// create a topic publisher
TopicPublisher topicPublisher = topicSession.createPublisher(topic);
topicPublisher.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
// create the "Hello World" message
TextMessage message = topicSession.createTextMessage();
message.setText("hello world");
// Set two properties country and state
message.setStringProperty("country","US");
message.setStringProperty("state","New Jersey");
// Publish the message
topicPublisher.publish(message);
在上面的示例中,由于filter选项设置为仅在message属性的国家/地区设置为'US'
且状态设置为'California'
时才接收消息。但是对于azure服务总线,此过滤器选项将不被接受,因此,消费者会将所有消息发布到该队列。