Сообщение JMS MockTopic не обнаружено слушателем сообщения? - PullRequest
0 голосов
/ 21 июля 2011

Я пытаюсь написать тест jUnit, чтобы показать, что JMS Функция подписчика start () запускает прослушиватель сообщений для темы (и этосообщения не использовались до вызова start () ).

Я столкнулся с проблемой, когда сообщения, помещенные в тему перед функцией start () Вызванные не обрабатываются после вызова start () .Сообщения, помещенные в тему после вызова start () , обрабатываются немедленно.

MockTopic topicWriter = getMockTopic(TOPIC);

// publish a message for the listener to pick up
MockObjectMessage objectMessage = new MockObjectMessage(message);
objectMessage.setBooleanProperty("Broadcast", true);

topicWriter.addMessage(objectMessage);

// the message doesn't get consumed because the subscriber has not been started
//...assert that the message is not processed... (**SUCCEEDS**)

// start the subscriber/listener
subscriber.start();

//...assert that the messages sitting on the topic get processed... (**FAILS**)

// publish a message for the listener to pick up
topicWriter.addMessage(objectMessage);

//...assert that the message gets processed... (**SUCCEEDS**)

Хотя это показывает, что слушатель не работает до start () ,отключение прослушивателя сообщений должно привести к обработке всех сообщений, находящихся в данный момент в теме.

Я попытался убедиться в том, что постоянство не было причиной, добавив:

    objectMessage.setJMSDeliveryMode(DeliveryMode.PERSISTENT);

, ноэто не помогло.

Фактически запущенная программа, кажется, указывает, что сообщения, в настоящее время находящиеся в Topic , обрабатываются в start () .Кто-нибудь знает, почему сообщения, в настоящее время MockTopic могут не обрабатываться в start () ?Это ограничение MockTopic ?

1 Ответ

0 голосов
/ 22 июля 2011

Я не совсем уверен, если это проблема MockTopic, но в отношении стандартного JMS вы не ожидаете, что запущенный слушатель получит сообщения, опубликованные до его запуска, если только это не была подписка длительная . Настойчивость не здесь и не там.

...