Ich versuche, rubywmq gem zu verwenden, um eine Nachricht in einem IBM MQ Pub/Sub-Thema zu veröffentlichen. Ich sehe keine direkte Art der Veröffentlichung von Ruby-Code zum Thema.So veröffentlichen Sie eine Nachricht in IBM WebsphereMQ TOPIC mithilfe von rubywmq gem
Im Folgenden ist der MQ THEMA, SUB Setup 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)
Ich habe auch versucht mit MQRFH2 Header Ruby-Code für das Thema zu Aliaswarteschlange Veröffentlichung:
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
Und dann fügen Sie ein SUB mit Wahl wie:
DEFINE SUB(SUB.APP.RAW.INPUT) TOPICOBJ(MY_TOPIC) TOPICSTR('MSG/RAW') DEST(APP.RAW.INPUT) PSPROP(RFH2) SELECTOR('route = ''COM/APP/MSG/RAW''')
kann nicht gelingen. Könnte jemand bitte auf das Problem hinweisen oder eine Alternative vorschlagen? Vielen Dank.
Software-Version:
- IBM WMQ Server &-Client v7.5
- Rubin v2.3.0
- rubywmq v2.1.1
Hallo Rob, danke für deine Antwort. Ich habe meine Frage aktualisiert, um die verwendeten Versionen anzuzeigen. Ich konnte mithilfe von MQ Explorer überprüfen, ob das Thema eine Nachricht erhalten hat, wenn es an den Aliasnamen der Themenwarteschlange gesendet wurde. Warteschlangen, die das Thema abonniert haben, haben jedoch keine Nachrichten erhalten. Inhaltsbasiertes Routing mit PSPROP und SELECTOR funktionierte nicht. – Ambal
Das Problem besteht weiterhin darin, dass ein Alias über ein Thema * niemals * zu einer Topic-Zeichenfolge führt, die länger ist als die im Topic-Objekt. Da das einzige mögliche Thema "COM/APP" ist, wird keine Veröffentlichung in der Subskriptionswarteschlange landen, daher kann der Selektor nichts tun. Ich würde vorschlagen, den Publisher ohne die Abonnenten-App auszuführen, bis Sie Nachrichten in den Abonnementwarteschlangen erhalten. –