Behandlung von Trigger-Messages

Bei der Trigger-gesteuerten Batch-Bearbeitung von Messages gibt es außer der auslösenden eine weitere, s.g. Trigger-Message. Die wird im MQM intern generiert und ebenfalls dort intern konsumiert (über eine Initialisierungs-Queue). Diese Message beinhaltet verschiedene Daten zu dem Trigger-Ereignis. Die zu triggernde Anwendung kann, wenn sie möchte, muss aber nicht, diese Daten (die werden als Aufrufparameter übergeben) auswerten. Normalerweise macht das der MQM/TriggerMonitor selbst.

Hier weitere Infos zu der Trigger-Message (MQTMC2 - Auslösenachricht 2, Zeichenformat):

Überblick: http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ref.dev.doc/q100950_.htm?lang=de

Format: http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ref.dev.doc/q100940_.htm?lang=de

Hier ist ein Beispiel, wie man aus der getriggerten Anwendung den Queue-Namen ausliest, in der die Message (also die eigentliche Nutz-Message) eingetroffen war:

#include <cmqc.h>
 
int main (int argc, char *argv[])
{
	MQCHAR48 nameMQM;	// Queue Manager Name
	MQCHAR48 nameQ;		// Queue Name
 
	MQTMC2	*triggerMessage	// Trigger Message Structure
 
	triggerMessage = (MQTMC2 *) argv[1];
 
	memcpy(nameMQM,	triggerMessage->QMgrName,	sizeof(nameMQM));
	memcpy(nameQ,	triggerMessage->QName,		sizeof(nameQ));
 
	MQCONN(...);	// Connect zum MQM
	MQOPEN(...);	// Open Queue
	MQGET(...);	// Get Message
	MQCLOSE(...);	// Close Queue
	MQDISC(...);	// Disconnect vom MQM
 
	return 0;
} // main()

Stand: 06.07.2015
: Jürgen Kreick

EOF