Создание временных вопросов - PullRequest
2 голосов
/ 18 сентября 2009

Я пытался создать и использовать TemporaryQueue в JMS. Мой производитель преуспевает, но мой потребитель терпит неудачу в этом как, со следующей ошибкой. Я понимаю, что для этого вопроса может потребоваться полный код, но он очень длинный, и я уверен, что никто не хочет разбирать его. Однако, если ответ не так очевиден из того, что я дал здесь, пожалуйста, не стесняйтесь указывать мне на любые ресурсы, связанные с 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)

Ответы [ 2 ]

1 голос
/ 25 августа 2010

Кажется, что вы делаете это в неправильном порядке. Обычно потребитель создает временную очередь, открывая ее для ввода, а затем использует этот объект для заполнения полей Reply-To в сообщении запроса. Приложение поставщика услуг прослушивает заранее определенную, хорошо известную очередь для сообщения запроса и затем использует поля Reply-To из запроса для адресации ответа. Таким образом приложение производителя обнаруживает динамическую очередь на основе полученного запроса.

Динамические очереди обычно не используются в качестве места назначения для запроса или сообщения дейтаграммы. Эти сценарии использования требуют заранее определенной, хорошо известной очереди, которую прослушивает потребитель. Динамические очереди почти всегда для ответного сообщения в обмене запросом-ответом.

0 голосов
/ 10 марта 2010

Согласно J2EE 1.4 документам :

Объект TemporaryQueue - это уникальный объект Queue, созданный на время соединения. Это системная очередь, которая может использоваться только тем соединением, которое ее создало.

Я подозреваю, что вы пытаетесь использовать другое соединение.

...