【问题标题】:Trouble synchronously receiving messages from Queue in Websphere 6.1在 Websphere 6.1 中无法同步接收来自队列的消息
【发布时间】:2011-10-09 09:18:08
【问题描述】:

我在使用 EJB 3.0 FP 的 Websphere 6.1.0.33 开发 JMS 应用程序时遇到问题。

应用程序有两个队列 - RequestQueue 和 ResponseQueue。 MDB 附加到 RequestQueue 以通过 Session bean 处理消息并在 ResponseQueue 中发布响应。 Servlet 用作测试客户端。它有两个选项 - 向 RequestQueue 发送请求和通过 MessageConsumer.receiveNoWait 同步接收响应。 问题是 receiveNoWait 总是返回 null - 即使有消息在队列中(我可以通过 AdminConsole 看到它们)。 MessageConsumer.receive 永远阻塞。 此外,如果我附加 MDB 来监听 ResponseQueue,它会正常工作并接收所有响应。

SIB 用作消息传递引擎,有两个目的地链接到队列。 每个 MDB 都配置了一个激活规范。

我仔细检查了所有绑定,但仍然看不到问题。

http://www-01.ibm.com/support/docview.wss?uid=swg21199176 中指定跟踪不会提供有用的数据。

也许我遗漏了一些配置组件?

【问题讨论】:

    标签: java jms websphere


    【解决方案1】:

    案件解决了!

    错过了connection.start() 的电话。

    感谢@pap 的帮助 =)。

    下次应该多关注文档。

    【讨论】:

    • 恭喜 :) 祝你好运。
    【解决方案2】:

    根据您的描述理解您的确切设置有点困难,但如果我理解正确,您的 servlet 正在显式连接到 ResponseQueue(基于“正常”JMS 连接而不是 JCA/激活配置文件绑定创建 MessageConsumer )。如果您还为 ResponseQueue 配置了激活配置文件,这将是一个问题,因为激活配置文件将“接管”队列的消耗。如果您打算手动使用 ResponseQueue,请确保删除任何激活配置文件。

    【讨论】:

    • 是的,Servlet 通过session.createConsumer(queue).receiveNoWait() 显式连接。 Queue 和 ConnectionFactory 通过@Resource 注入,并在部署描述符中配置了绑定。另外,servlet 的 JCA/激活配置文件绑定设置是什么?使用 MessageListener?
    • 我删除了ResponseQueue 的所有激活规范,但没有任何效果。尽管如此,他们“接管”的想法似乎是合理的。
    • 好吧,您仍然无法接收消息这一事实表明存在某种类型的配置错误。您能否使用您的 servlet 代码以及您的 web.xml 和 ibm-web-bnd.xmi 文件的内容来更新您的问题。如果您使用的是 Spring,请包含应用程序上下文配置的相关部分。
    猜你喜欢
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 2013-08-01
    • 2016-05-07
    • 2016-02-18
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多