activemqを使用してメッセージリスナーを追加しようとしました。私が遭遇したすべての例は、ネストされたonMessagesを使用しています。 Java eclipseはこれを認めていません(stackoverflowでも)。だから今私はそれを設定する方法が混乱しています。リスナーのonMessageフォームを削除すると、Eclipseはそこに実装する必要があると私に伝えます。また、クラス内でもonMessageメソッドを実装したいと考えています。ですから、私はonMessageをリスナーオブジェクト内とクラス内に持っています。どのようにこれを適切に処理できますか?私は自分のコードでonMessageを1つ持っている解決策を見ていません。JMS - メッセージリスナーonMessageは2回実装する必要がありますか?
EDIT:コードはエラーなしで実行され、メッセージを受け取ります。それでも、それはあなたがインライン匿名クラスとしてのMessageListenerを作成しているので、2 onMessages
public static class HelloWorldConsumer implements Runnable, MessageListener {
@Override
public void run() {
// TODO Auto-generated method stub
// Create a Connection
try {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("Physical");
MessageConsumer consumer = session.createConsumer(topic);
MessageListener listner = new MessageListener() {
@Override
public void onMessage(Message message) {
try {
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
System.out.println("Received message : "
+ textMessage.getText() + "'");
}
} catch (JMSException e) {
System.out.println("Caught:" + e);
}
}
};
consumer.setMessageListener(listner);
try {
System.in.read();
} catch (IOException e) {
}
connection.close();
} catch (JMSException ex) {
// Logger.getLogger(Consumer.class.getName()).log(Level.SEVERE, null, ex);
}
}//end method
@Override
public void onMessage(Message arg0) {
// TODO Auto-generated method stub
}
}}
ああ、私は単純に "MessageListenerを実装し、最後に空のonMessageを削除しますか? –
はい、それをコード化した方法では、MessageListenerを実装する必要はありません –