0
我尝试使用activemq添加消息侦听器。我遇到的所有示例都使用嵌套的onMessages。 Java的eclipse不允许这个,因为我发现了(也在stackoverflow)。所以现在我很困惑如何设置它。当我删除onMessage窗体的监听器时,Eclipse告诉我必须在那里实现它。另外,它希望我也在类中实现onMessage方法。所以我在监听器对象和类中有onMessage。我如何正确处理这个问题?我没有看到我的代码中有一个onMessage的解决方案。JMS - 消息监听器onMessage必须执行两次?
编辑:该代码运行没有错误,并收到消息。不过奇怪的是有两个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
}
}}
ah所以我只是删除“实现MessageListener并在最后删除空的onMessage? –
是的,你编码的方式,你不需要实现MessageListener –