2015-05-18 2 views
2

Просто хочу подтвердить правильный способ доставки сообщений MQ на узел MQOutput. Недавно натолкнулась на ситуацию, когда я почувствовал, что немного запутался. Вот сценарий.Отправка сообщений в узел MQOutput

У меня есть локальная очередь на Qmgr, скажем (A), которая получает сообщения от приложений и имеет локальный брокер, связанный с этим qmgr (A), с развернутым потоком сообщений, который потребляет беспорядки из этой очереди и переносит его на другой локальная (LB) очередь в диспетчере очереди (B).

Чтобы успешно доставлять сообщения QMGR (B) я должен

  1. Создание определения удаленной очереди на Qmgr (A) с именем очереди передачи, совпадающий с именем удаленного менеджера очередей, здесь (B) значение узла MQOutput устанавливается как, queue-> имя удаленной очереди на определении (а) и значение менеджера очередей, как пустой
    или

  2. создать только очередь передачи, которая соответствует с именем очереди имени удаленного менеджера, здесь (B). Значение узла MQOutput установлено как queue-> target local queue (L.B) и значение менеджера очереди как (B).

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

Есть ли необходимость всегда создавать «n» количество удаленных определений очереди, когда нужно отправлять сообщения в «n» количество локальных очередей?

Просьба направлять меня, чтобы лучше понять это. Заранее благодарю каждого из вас.

ответ

2

Нет необходимости создавать n определений удаленной очереди, MQ рада принять вывод, помеченный как «Идентификатор очереди» на «Имя менеджера очереди».

Вы говорите, что при использовании метода 2. ваши сообщения «сидят в локальной очереди». Есть несколько вещей, которые вы должны проверить, чтобы решить эту проблему.

  • Предполагаю, что именованная очередь L.B определена на QMgr B, а не QMgr A?
  • Я предполагаю, что локальная очередь, на которой сидят сообщения, является передачей очереди?
  • Вы определили канал для чтения сообщений из очереди передачи, на которую они застряли?
  • Вы начали канал, который должен перемещать сообщения из очереди передачи в QMgr B?
+0

Благодарим за ваши предложения по поводу этого Морага, его изображение теперь совершенное. Да, как вы уже упоминали, это было siiting в очереди передачи. Канал, созданный для этой цели, использовал другую очередь XMIT, отличную от ожидаемой. Покончил с этим, чтобы использовать правильный и теперь работающий. Каждый раз, когда я думал, что удаленная очередь используется здесь. В конце концов вы поняли, что удаленные очереди не обязательно необходимы для доставки сообщений в этом сценарии. Еще раз спасибо. –

+0

Также @Morag Hughson, я буду очень рад, если я точно знаю, как это работает. Мы явно не указываем локальную очередь на очередь передачи, как это делаем с определением очереди Remote. Но в этом случае, как MQ работает, чтобы выбрать msgs из локальной очереди для передачи очереди, чтобы доставить ее до места назначения? Еще раз спасибо. –

+0

Менеджер очередей проходит процесс, называемый «разрешение имен в очереди», чтобы узнать, в какую очередь передачи помещается сообщение. Если вы использовали объект QREMOTE, он будет выглядеть там для XMITQ, если вы используете имя очереди и имя менеджера очереди напрямую, оно использует очередь передачи с тем же именем. Существует множество других дел. читайте о «разрешении имен в очереди», http://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ref.con.doc/q081570_.htm –