Jakarta ee 如何实现JMS MessageListener?
我试图实现MessageListener,但它不起作用,但当我使用MessageListner时,它不起作用。那么,当MessageListener开始工作时,我应该做什么呢?我正在使用JBoss4.02Jakarta ee 如何实现JMS MessageListener?,jakarta-ee,jms,message-queue,Jakarta Ee,Jms,Message Queue,我试图实现MessageListener,但它不起作用,但当我使用MessageListner时,它不起作用。那么,当MessageListener开始工作时,我应该做什么呢?我正在使用JBoss4.02 recv.receive(); // This works recv.setMessageListener(new ExListener()); // This doesn't work public static class ExListener implements
recv.receive(); // This works
recv.setMessageListener(new ExListener()); // This doesn't work
public static class ExListener
implements MessageListener
{
public void onMessage(Message msg)
{
TextMessage tm = (TextMessage) msg;
try {
System.out.println("onMessage, recv text="+tm.getText());
} catch(Throwable t) {
t.printStackTrace();
}
}
}
问题可能是注册监听器的类已经结束,监听器对象也不存在了。您应该保持对象处于活动状态并运行以接收消息。问题可能是注册侦听器的类已结束,并且侦听器对象已不存在。您应该让对象保持活动状态并运行以接收消息。这可以通过使用消息驱动bean在Jboss服务器上实现,这可能是最好的方法,当然,更轻量级的选项是通过实现MessageListener在Spring中创建JMSlister这可以在Jboss上实现通过使用消息驱动bean,这可能是最好的方法,当然,更轻量级的选项是通过实现MessageListener在Spring中创建jmsListener,您记得调用connection.start吗?我猜您一定已经有了接收方法,但可能是在更改代码时意外删除了它。您记得调用connection.start吗?我想您一定已经有了接收方法才能工作,但可能您在更改代码时意外删除了它。请提供有关它不工作的含义的信息。在第一个示例中,我收到消息,我可以对其进行sysout,但在第二个示例中,我没有收到消息,因为SysOutput没有打印,所以请提供有关它不起作用意味着什么的信息。在第一个示例中,我获取消息,并且可以将其系统输出,但在第二个示例中,我没有获取消息,因为sysout没有打印