主题无法接收消息

时间:2016-04-12 10:25:10

标签: jms spring-jms jms-topic

我有一个非持久的Topic客户端,它应该使用一个监听器异步接收消息。 当消息在Topic上发布时,我可以在管理控制台上看到消息已发布和使用,但我的客户端从未收到消息。

客户端能够正确建立连接,因为我可以在控制台上跟踪它。

有什么建议吗?

编辑:

做了一些分析,发现问题是用于连接的API。 当我使用以下代码时,我能够收听消息:

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

tsubs.setMessageListener(listener);

但是,当我使用以下代码时,它不起作用:

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();

第二种方法有什么问题?

0 个答案:

没有答案