【问题标题】:MDB not listening after startupMDB 启动后不监听
【发布时间】:2012-01-13 21:18:51
【问题描述】:

我有一个运行在一个 JVM 上的消息生产者,它将消息放入 JMS 队列中。我有一个消息消费者,它实现了消息驱动 Bean 和侦听此队列的 MessageListener 接口。这个消息消费者在不同的 JVM 上.

生产者将消息正确放入队列。但是MDB无法从队列中弹出消息。奇怪的是,当我重新启动消息消费者时,队列中的所有消息都被消息弹出立即消费。此后,无论生产者将多少消息放入队列,消息消费者都不会将它们弹出。 可能是什么原因??

我使用的应用服务器是JBOSS4.0.5.GA。

谢谢

【问题讨论】:

    标签: java jms message-driven-bean


    【解决方案1】:

    请提供更多详细信息。根据您提供的内容:

    • 您的消费者是否正在运行并等待消息? (在某种 while 循环或阻塞调用中)
    • 您可以在 jms 连接设置中将消费者的 prefetch 大小设置为 1,以便它仅从队列中获取 1 条(或任何数量)消息。

    【讨论】:

    • 消费者正在运行。队列中已经有消息。预计将这些消息弹出并开始处理它们。但它不是。我必须重新启动它。没有任何类型的循环。它是 MDB 的实现,并有一个 onMessage() 方法。
    • 好的,所以如果你的消费者不经常收听消息,它只会收到一次消息。你需要的是一个持续监听队列的线程。
    • 我猜这就是MDB应该做的,对吧?它应该继续听队列。如果我错了,请纠正我......
    • 是的。这就是为什么除非我有人看到你所做的代码,否则很难提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2015-12-29
    • 2015-08-30
    • 2012-03-27
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多