Я пытаюсь использовать gb rubywmq для публикации сообщения в пабе/подписях IBM MQ. Я не вижу прямого способа публикации темы из Ruby-кода.Как опубликовать сообщение в IBM WebsphereMQ TOPIC с использованием rubywmq gem
Ниже приводится MQ темы, SUB настройки MQSC:
DEFINE TOPIC(MY_TOPIC) TOPICSTR('COM/APP')
DEFINE QALIAS(MY_TOPIC_Q) TARGET(MY_TOPIC) TARGTYPE(TOPIC)
DEFINE QLOCAL(APP.RAW.INPUT)
DEFINE QLOCAL(APP.VALIDATOR.INPUT)
DEFINE QLOCAL(APP.ENRICHER.INPUT)
DEFINE QLOCAL(APP.XFORM.INPUT)
DEFINE QLOCAL(APP.LOGGER.INPUT)
DEFINE SUB(SUB.APP.RAW.INPUT) TOPICOBJ(MY_TOPIC) TOPICSTR('MSG/RAW') DEST(APP.RAW.INPUT)
DEFINE SUB(SUB.APP.VALIDATOR.INPUT) TOPICOBJ(MY_TOPIC) TOPICSTR('MSG/XML') DEST(APP.VALIDATOR.INPUT)
DEFINE SUB(SUB.APP.ENRICHER.INPUT) TOPICOBJ(MY_TOPIC) TOPICSTR('MSG/VLD') DEST(APP.ENRICHER.INPUT)
DEFINE SUB(SUB.APP.XFORM.INPUT) TOPICOBJ(MY_TOPIC) TOPICSTR('MSG/ENR') DEST(APP.XFORM.INPUT)
DEFINE SUB(SUB.APP.LOGGER.INPUT) TOPICOBJ(MY_TOPIC) TOPICSTR('#') DEST(APP.LOGGER.INPUT)
Я также попытался публикации в очереди псевдонимов для темы с заголовком MQRFH2 рубинового Код:
WMQ::QueueManager.connect(:connection_name => conn_name, :channel_name => channel_name, :q_mgr_name=> queue_manager) do |qmgr|
message = WMQ::Message.new
message.data = 'Hello World'
message.headers = [
{
header_type: :rf_header_2,
xml: ['<route>COM/APP/MSG/RAW</route>']
}
]
message.descriptor[:format] = WMQ::MQFMT_STRING
qmgr.put(q_name: 'MY_TOPIC_Q', message: message)
end
А затем добавьте SUB с селектором типа:
DEFINE SUB(SUB.APP.RAW.INPUT) TOPICOBJ(MY_TOPIC) TOPICSTR('MSG/RAW') DEST(APP.RAW.INPUT) PSPROP(RFH2) SELECTOR('route = ''COM/APP/MSG/RAW''')
Не удалось. Может ли кто-нибудь указать, где проблема, или предложить альтернативу? Благодарю.
Software Version Использована
- IBM WMQ Сервер & Client v7.5
- Рубин v2.3.0
- rubywmq v2.1.1
Привет, Роб, спасибо за ваш ответ. Я обновил свой вопрос, чтобы показать используемые версии. Я смог проверить, используя MQ Explorer, что полученное сообщение темы отправлено в псевдоним очереди задач. Однако очереди, подписанные на эту тему, не получали сообщений. Консолидированная маршрутизация с использованием PSPROP и SELECTOR не работала. – Ambal
Проблема остается в том, что псевдоним по теме * никогда не приведет к тому, что строка темы будет длиннее, чем в объекте темы. Поскольку единственной возможной темой является «COM/APP», публикация не попадет в очередь подписки, поэтому ничто для селектора не будет действовать. Я предлагаю запустить издатель без абонентского приложения, пока вы не получите сообщения в очередях подписки. –