Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DefaultMessageListenerContainer not receiving messages

I have a DefaultMessageListenerContainer configured as follows:

DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
container.setConcurrentConsumers(4);
container.setConnectionFactory(connectionFactory);
container.setDestinationName(String.format("Consumer.%s.VirtualTopic.%s", group, topic));
container.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
container.setSessionTransacted(true);
container.setMessageListener(new DelegatingMessageListener(listener, messageMapper, event));

container.start();

The message container never receives messages, and my message listener is never invoked. Leaving all else the same, if I just switch DefaultMessageListenerContainer to SimpleMessageListenerContainer, it works - but SimpleMessageListenerContainer doesn't recover after a connection loss

There are no errors in the logs, and hardly any relevant messages. Does anyone have any reasons for why this may be happening?

like image 842
Colin M Avatar asked Jan 26 '14 06:01

Colin M


1 Answers

When constructing the container in Java (outside a Spring application context), you need to invoke afterPropertiesSet() before start().

The context does that automatically for Spring beans.

like image 156
Gary Russell Avatar answered Sep 30 '22 11:09

Gary Russell