私は、クラスにMessageListenerを実装するときにsetMessageListenerが使用される小さな部分を知っています。 以下のクラスはレシーバ用です。 subscribeメソッドとpublishメソッドは同じクラスにあります。これを実行しようとすると、アプリケーションはメッセージを受信しません。それはおそらく購読方法のいくつかのエラーのためにメッセージを生成していません、私は確信していません。MessageConsumer.receive()とMessageConsumer.setMessageListener(新しいClassName());
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インタフェースから延び、代わりメッセージメッセージ= 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();
}