【发布时间】:2016-05-29 17:26:45
【问题描述】:
我知道当我们在类上实现 MessageListener 时使用 setMessageListener 的一小部分。 下面的课程是针对接收者的。订阅和发布方法都在同一个类中。当我尝试执行此操作时,我的应用程序不会收到消息。它没有产生消息也可能是因为订阅方法中的一些错误,我不确定。
public void subscribe(Connection topicConnection, Topic topic) throws JMSException{
TopicSession subscribeSession= (TopicSession) topicConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
topic=subscribeSession.createTopic("topic/mohit");
TopicSubscriber topicSubscriber=subscribeSession.createSubscriber(topic);
topicConnection.start();
Message message=topicSubscriber.receive();
TextMessage textmessage=(TextMessage) message;
System.out.println(textmessage.getText());
}
}
但是当我有下面的代码,其类从 MessageListener 接口扩展而不是 Message message=topicSubscriber.receive(); 我使用 topicSubscriber.setMessageListener(new Chat()); 应用程序运行良好。请告诉我第一次实现时出了什么问题。
public void subscribe(Connection topicConnection, Topic topic) throws JMSException{
TopicSession subscribeSession= (TopicSession) topicConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
topic=subscribeSession.createTopic("topic/mohit");
TopicSubscriber topicSubscriber=subscribeSession.createSubscriber(topic);
topicSubscriber.setMessageListener(new Chat());
}
@Override
public void onMessage(Message message) {
try {
System.out.println(((TextMessage) message).getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
【问题讨论】:
标签: jms message-listener