メッセージIDでトピックからメッセージを選択する際に問題が発生しました。私は常に真である 例えば、セレクタを提供してもさらにJMS:セレクタによってトピックからjmsメッセージを選択できません
//publish message
connectionFactory = new ActiveMQConnectionFactory("vm://localhost");
//or external broker: tcp://localhost:61616
con = connectionFactory.createConnection();
con.setClientID("foo");
con.start();
session = connection.createSession(true, Session.SESSION_TRANSACTED);
topic = session.createTopic("topic_name");
producer = session.createProducer(topic);
//create text message
producer.send(message);
messageId = message.getJMSMessageID();
session.commit();
//close all stuff
//get message by id (the same VM split second after publishing)
//get connection the same way as for publishing
session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
topic = session.createTopic("topic_name");
consumer = session.createDurableSubscriber(topic, "SUBS1", "JMSMessageID='messageId'", false);
//here we get stuck though the message IS there
msg = consumer.receive(); //receiveNoWait gives null
: はここで煮詰めたコードです"1 = 1"または空の1: ""、null
耐久性のあるサブスクライバでもメッセージをフェッチしません。
一方、alsways trueセレクタを使用して消費者の後に何かを投稿すると、このメッセージが取得されます。
しかし、このようなコードは、私はそれがセレクタとDurableSubscriberのは、既存のメッセージを無視するように私には見えます
consumer = session.createDurableSubscriber(topic, "SUBS1");
while (msg != null) {
msg = consumer.receive();
}
を探してきたIDを持つものを含むすべての私のメッセージをフェッチありません。私は
は、これまでのところ、私は唯一のActiveMQ 5.5.1 JMSプロバイダとして試みJMS 1.1仕様でそのようなものを見つけられませんでしたが
質問は、私が何か間違ったことをやっている場合、またはそれはバグですか?
ありがとう。今それはどのように動作するかはかなり明確です –