【问题标题】:Creating TemporaryQueues创建临时队列
【发布时间】:2010-08-25 23:38:05
【问题描述】:

我尝试在 JMS 中创建和使用 TemporaryQueue。我的生产者成功了,但我的消费者失败了,出现以下错误。我知道这个问题可能需要完整的代码,但它非常冗长,我相信没有人愿意对此进行排序。但是,如果我在这里给出的答案不是很明显,请随时向我指出任何处理 TemporaryQueues 或 TempTopics 的资源,谢谢。'

[编辑] 我忘了附上代码和错误:

导致错误的代码:

QueueReceiver myRecv = mySession.createReceiver(myQueue);

错误:

CWSIA0086E: Failed to create a MessageConsumer for queue://_Q_CBF079A6A1E3018A0000000000262775?busName=myBus2
    at com.ibm.ws.sib.api.jms.impl.JmsMsgConsumerImpl.createCoreConsumer(JmsMsgConsumerImpl.java:689)
    at com.ibm.ws.sib.api.jms.impl.JmsMsgConsumerImpl.<init>(JmsMsgConsumerImpl.java:391)
    at com.ibm.ws.sib.api.jms.impl.JmsQueueReceiverImpl.<init>(JmsQueueReceiverImpl.java:58)
at com.ibm.ws.sib.api.jms.impl.JmsQueueSessionImpl.instantiateConsumer(JmsQueueSessionImpl.java:203)
at com.ibm.ws.sib.api.jms.impl.JmsSessionImpl.createConsumer(JmsSessionImpl.java:950)
at com.ibm.ws.sib.api.jms.impl.JmsSessionImpl.createConsumer(JmsSessionImpl.java:900)
at com.ibm.ws.sib.api.jms.impl.JmsQueueSessionImpl.createReceiver(JmsQueueSessionImpl.java:123)
at com.ibm.ws.sib.api.jms.impl.JmsQueueSessionImpl.createReceiver(JmsQueueSessionImpl.java:100)

【问题讨论】:

    标签: jms ibm-mq


    【解决方案1】:

    您似乎以错误的顺序执行此操作。通常,消费者通过打开临时队列进行输入来创建临时队列,然后使用该对象填写请求消息上的回复字段。服务提供者应用程序在预定义的、众所周知的队列上侦听请求消息,然后使用请求中的回复字段来处理响应。这样,生产者应用根据收到的请求发现动态队列。

    动态队列通常不用作请求或数据报消息的目的地。这些用例需要一个预定义的、众所周知的队列,消费者可以监听该队列。动态队列几乎总是用于请求-回复交换中的回复消息。

    【讨论】:

      【解决方案2】:

      根据J2EE 1.4 documents

      TemporaryQueue 对象是在连接期间创建的唯一队列对象。它是一个系统定义的队列,只能由创建它的 Connection 使用。

      我怀疑您正在尝试从不同的连接进行消费。

      【讨论】:

        猜你喜欢
        • 2011-06-09
        • 2019-10-01
        • 2010-12-07
        • 2013-04-08
        • 2018-06-01
        • 2011-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多