0

I have a non durable Topic client which is supposed to receive messages asynchronously using a listener. When message is published on Topic, i can see on admin console that message is published and consumed but my client never receives it.

Client is able to establish connection properly as i can track it on console.

Any suggestions?

EDIT:

Did some more analysis and found that issue is with API used for connection. I was able to listen to messages when i use following code:

TopicConnection conn;
TopicSession session = conn.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic(monacoSubscriberEmsTopic);
conn.start();
tsubs = session.createSubscriber(topic); 

tsubs.setMessageListener(listener);

But when i use following code then it doesn't work:

DefaultMessageListenerContainer listenerContainer = createMessageListenerContainer();

private DefaultMessageListenerContainer createMessageListenerContainer() {
    DefaultMessageListenerContainer listenerContainer = new DefaultMessageListenerContainer();
    listenerContainer.setClientId(clientID);
    listenerContainer.setDestinationName(destination);
    listenerContainer.setConnectionFactory(connectionFactory);
    listenerContainer.setConcurrentConsumers(minConsumerCount);
    listenerContainer.setMaxConcurrentConsumers(maxConsumerCount);
    listenerContainer.setPubSubDomain(true);
    listenerContainer.setSessionAcknowledgeModeName(sessionAcknowledgeMode);
    if (messageSelector != null)
      listenerContainer.setMessageSelector(messageSelector);
    listenerContainer.setSessionTransacted(true);
    return listenerContainer;
  }
listenerContainer.initialize();
listenerContainer.start();

What is wrong with second approach?

Lokesh
  • 7,810
  • 6
  • 48
  • 78

0 Answers0