Action (MQLONG)
Dies gibt den Typ der ausgeführten Einreihung (PUT) und die Beziehung zwischen der ursprünglichen Nachricht, die im Feld OriginalMsgHandle angegeben ist, und der neuen Nachricht an, die im Feld NewMsgHandle angegeben ist. Die Eigenschaften der Nachricht werden vom Warteschlangenmanager entsprechend des Werts der angegebenen Aktion ausgewählt.
Sie können sich die Inhalte des Nachrichtendeskriptors mithilfe des Parameters MsgDesc im MQPUT oder über MQPUT1-Aufrufe anzeigen lassen. Alternativ kann auf die Angabe des Parameters MsgDesc verzichtet werden oder man kann angeben, dass dieser nur zur Ausgabe dient, indem MQPMO_MD_FOR_OUTPUT_ONLY im Optionsfeld der MQPMO-Struktur eingefügt wird.
Wird der Parameter MsgDesc nicht bereitgestellt oder ist er als "output-only" definiert, wird der Nachrichtendeskriptor für die neue Nachricht aus den Nachrichtenkennungsfeldern von MQPMO ausgefüllt, entsprechend den in diesem Thema behandelten Regeln.
Die unter Kontextinformationen steuern beschriebene Kontexteinstellung und Übergabeaktivitäten werden wirksam, nachdem der Nachrichtendeskriptor zusammengesetzt wurde.
Bei Angabe eines falschen Aktionswerts schlägt der Aufruf mit dem Ursachencode MQRC_ACTION_ERROR fehl.
- MQACTP_NEW
- Eine neue Nachricht wird eingereiht und das Programm gibt keine Beziehung zu
einer früheren Nachricht an. Der Nachrichtendeskriptor
setzt sich wie folgt zusammen:
- Wenn im MQPUT- oder MQPUT1-Aufruf eine MsgDesc bereitgestellt wird und in den MQPMO.Options MQPMO_MD_FOR_OUTPUT_ONLY nicht enthalten ist, wird dieser unverändert als Nachrichtendeskriptor verwendet.
- Wird keine MsgDesc angegeben oder die MQPMO.Options enthalten MQPMO_MD_FOR_OUTPUT_ONLY, generiert der Warteschlangenmanager den Nachrichtendeskriptor anhand einer Kombination aus Eigenschaften aus OriginalMsgHandle und NewMsgHandle. Alle in der neuen Nachrichtenkennung explizit festgelegten Nachrichtendeskriptorfelder haben Vorrang vor denen in der ursprünglichen Nachrichtenkennung.
- MQACTP_FORWARD
- Eine zuvor abgerufene Nachricht wird weitergeleitet. Die ursprüngliche
Nachrichtenkennung gibt die Nachricht an, die zuvor abgerufen wurde.
Die neue Nachrichtenkennung gibt alle Änderungen an den Eigenschaften (einschließlich des Nachrichtendeskriptors) zur ursprünglichen Nachrichtenkennung an.
Der Nachrichtendeskriptor setzt sich wie folgt zusammen:- Wenn im MQPUT- oder MQPUT1-Aufruf eine MsgDesc bereitgestellt wird und in den MQPMO.Options MQPMO_MD_FOR_OUTPUT_ONLY nicht enthalten ist, wird dieser unverändert als Nachrichtendeskriptor verwendet.
- Wird keine MsgDesc angegeben oder die MQPMO.Options enthalten MQPMO_MD_FOR_OUTPUT_ONLY, generiert der Warteschlangenmanager den Nachrichtendeskriptor anhand einer Kombination aus Eigenschaften aus OriginalMsgHandle und NewMsgHandle. Alle in der neuen Nachrichtenkennung explizit festgelegten Nachrichtendeskriptorfelder haben Vorrang vor denen in der ursprünglichen Nachrichtenkennung.
- Wenn in den MQPMO.Options eine MQPMO_NEW_MSG_ID oder MQPMO_NEW_CORREL_ID angegeben ist, wird diese berücksichtigt.
- Alle Eigenschaften aus der ursprünglichen Nachrichtenkennung, die MQCOPY_FORWARD in den MQPD.CopyOptions enthalten
- Alle Eigenschaften aus der neuen Nachrichtenkennung. Für jede Eigenschaft in der neuen Nachrichtenkennung, die denselben Namen hat wie eine Eigenschaft in der ursprünglichen Nachrichtenkennung, wird der Wert aus der neuen Nachrichtenkennung übernommen. Die einzige Ausnahme zu dieser Regel ist der Sonderfall, wenn die Eigenschaft in der neuen Nachrichtenkennung denselben Namen hat wie eine Eigenschaft in der ursprünglichen Nachrichtenkennung, wobei der Wert der Eigenschaft Null ist. In diesem Fall wird die Eigenschaft aus der Nachricht entfernt.
Die weiterzuleitenden Nachrichtendaten werden aus dem Pufferparameter MQPUT oder MQPUT1 übernommen.
- MQACTP_REPLY
- Eine zuvor abgerufene Nachricht wird beantwortet. Die ursprüngliche Nachrichtenkennung
gibt die zuvor abgerufene Nachricht an.
Die neue Nachrichtenkennung gibt alle Änderungen an den Eigenschaften (einschließlich des Nachrichtendeskriptors) im Vergleich zur ursprünglichen Nachrichtenkennung an.
Der Nachrichtendeskriptor setzt sich wie folgt zusammen:Die Nachrichteneigenschaften setzen sich wie folgt zusammen:- Wenn im MQPUT- oder MQPUT1-Aufruf eine MsgDesc bereitgestellt wird und in den MQPMO.Options MQPMO_MD_FOR_OUTPUT_ONLY nicht enthalten ist, wird dieser unverändert als Nachrichtendeskriptor verwendet.
- Wird keine MsgDesc angegeben ist oder die MQPMO.Options enthalten MQPMO_MD_FOR_OUTPUT_ONLY,
werden die ursprünglichen Felder des Nachrichtendeskriptors wie folgt
ausgewählt:
Tabelle 1. Umsetzung der Antwortnachrichtenkennung Feld im MQMD Verwendeter Wert Report Sind MQRO_PASS_DISCARD_AND_EXPIRY
und MQRO_DISCARD_MSG gesetzt:
MQRO_DISCARD_MSG
andernfalls
MQRO_NONEMsgType MQMT_REPLY Verfall Sind MQRO_PASS_DISCARD_AND_EXPIRY
gesetzt:
Kopiert aus Eingabenachricht
andernfalls
MQEI_UNLIMITEDFeedback MQFB_NONE MsgId Ist MQPMO_NEW_MSG_ID gesetzt:
Eine neue Nachrichten-ID wird generiert
ansonsten, falls MQRO_PASS_MSG_ID gesetzt ist:
Kopiert aus Eingabenachricht
andernfalls
MQMI_NONECorrelId Ist MQPMO_NEW_CORREL_ID gesetzt:
Eine neue Korrelations-ID wird generiert
ansonsten, falls MQRO_COPY_MSG_ID_TO_CORREL_ID gesetzt ist:
Kopiert aus dem MsgId-Feld der
Eingabenachricht
ansonsten, falls MQRO_PASS_CORREL_ID gesetzt ist:
Kopiert aus dem CorrelId-Feld der
Eingabenachricht
andernfalls
MQCI_NONEBackoutCount 0 ReplyToQ Leerzeichen ReplyToQMgr Leerzeichen GroupId MQGI_NONE MsgSeqNumber 1 Relative Position 0 MsgFlags MQMF_NONE OriginalLength MQOL_UNDEFINED - Danach wird der Nachrichtendeskriptor vom neuen Nachrichtenhandle geändert – alle explizit als Eigenschaften im neuen Nachrichtenhandle eingerichteten Nachrichtendeskriptorfelder haben Vorrang vor den Nachrichtendeskriptorfeldern, wie oben beschrieben.
- Alle Eigenschaften aus der ursprünglichen Nachrichtenkennung, die MQCOPY_REPLY in den MQPD.CopyOptions enthalten
- Alle Eigenschaften aus der neuen Nachrichtenkennung. Für jede Eigenschaft in der neuen Nachrichtenkennung, die denselben Namen hat wie eine Eigenschaft in der ursprünglichen Nachrichtenkennung, wird der Wert aus der neuen Nachrichtenkennung übernommen. Die einzige Ausnahme zu dieser Regel ist der Sonderfall, wenn die Eigenschaft in der neuen Nachrichtenkennung denselben Namen hat wie eine Eigenschaft in der ursprünglichen Nachrichtenkennung, wobei der Wert der Eigenschaft Null ist. In diesem Fall wird die Eigenschaft aus der Nachricht entfernt.
- MQACTP_REPORT
- Als Ergebnis einer zuvor abgerufenen Nachricht wird ein Bericht
generiert. Die ursprüngliche Nachrichtenkennung gibt die Nachricht an, die das Generieren
des Berichts zur Folge hat.
Die neue Nachrichtenkennung gibt alle Änderungen an den Eigenschaften (einschließlich des Nachrichtendeskriptors) im Vergleich zur ursprünglichen Nachrichtenkennung an.
Der Nachrichtendeskriptor setzt sich wie folgt zusammen:Die Nachrichteneigenschaften setzen sich wie folgt zusammen:- Wenn im MQPUT- oder MQPUT1-Aufruf eine MsgDesc bereitgestellt wird und in den MQPMO.Options MQPMO_MD_FOR_OUTPUT_ONLY nicht enthalten ist, wird dieser unverändert als Nachrichtendeskriptor verwendet.
- Wird keine MsgDesc angegeben ist oder die MQPMO.Options enthalten MQPMO_MD_FOR_OUTPUT_ONLY,
werden die ursprünglichen Felder des Nachrichtendeskriptors wie folgt
ausgewählt:
Tabelle 2. Umsetzung der Kennung der Berichtsnachricht Feld im MQMD Verwendeter Wert Report Sind MQRO_PASS_DISCARD_AND_EXPIRY und
MQRO_DISCARD_MSG gesetzt:
MQRO_DISCARD_MSG
andernfalls
MQRO_NONEMsgType MQMT_REPORT Verfall Sind MQRO_PASS_DISCARD_AND_EXPIRY
gesetzt:
Kopiert aus Eingabenachricht
andernfalls
MQEI_UNLIMITEDMsgId Ist MQPMO_NEW_MSG_ID gesetzt:
Eine neue Nachrichten-ID wird generiert
ansonsten, falls MQRO_PASS_MSG_ID gesetzt ist:
Kopiert aus Eingabenachricht
andernfalls
MQMI_NONECorrelId Ist MQPMO_NEW_CORREL_ID gesetzt:
Eine neue Korrelations-ID wird generiert
ansonsten, falls MQRO_COPY_MSG_ID_TO_CORREL_ID gesetzt ist:
Kopiert aus dem MsgId-Feld der
Eingabenachricht
ansonsten, falls MQRO_PASS_CORREL_ID gesetzt ist:
Kopiert aus dem CorrelId-Feld der
Eingabenachricht
andernfalls
MQCI_NONEBackoutCount 0 ReplyToQ Leerzeichen ReplyToQMgr Leerzeichen OriginalLength Auf die BufferLength gesetzt - Danach wird der Nachrichtendeskriptor vom neuen Nachrichtenhandle geändert – alle explizit als Eigenschaften im neuen Nachrichtenhandle eingerichteten Nachrichtendeskriptorfelder haben Vorrang vor den Nachrichtendeskriptorfeldern, wie oben beschrieben.
- Alle Eigenschaften aus dem ursprünglichen Bericht, die MQCOPY_REPORT in den MQPD.CopyOptions enthalten
- Alle Eigenschaften aus der neuen Nachrichtenkennung. Für jede Eigenschaft in der neuen Nachrichtenkennung, die denselben Namen hat wie eine Eigenschaft in der ursprünglichen Nachrichtenkennung, wird der Wert aus der neuen Nachrichtenkennung übernommen. Die einzige Ausnahme zu dieser Regel ist der Sonderfall, wenn die Eigenschaft in der neuen Nachrichtenkennung denselben Namen hat wie eine Eigenschaft in der ursprünglichen Nachrichtenkennung, wobei der Wert der Eigenschaft Null ist. In diesem Fall wird die Eigenschaft aus der Nachricht entfernt.
Das Feedback-Feld im resultierenden MQMD stellt den zu generierenden Bericht dar. Beim Feedback-Wert MQFB_NONE schlägt der MQPUT- oder MQPUT1-Aufruf mit dem Ursachencode MQRC_FEEDBACK_ERROR fehl.
Zur Auswahl der Benutzerdaten der Berichtsnachricht konsultiert WebSphere MQ die Felder Report und Feedback im resultierenden MQMD sowie die Parameter Buffer und BufferLength des MQPUT- oder MQPUT1-Aufrufs.- Wird MQFB_COA, MQFB_COD oder MQFB_EXPIRATION zurückgemeldet, wird der Wert des Berichts überprüft.
- Liegt einer der folgenden Fälle vor, werden die vollständigen Nachrichtendaten
aus "Buffer" der Länge BufferLength verwendet.
- Es wird MQFB_EXPIRATION zurückgemeldet und der Bericht enthält MQRO_EXPIRATION_WITH_FULL_DATA
- Es wird MQFB_COD zurückgemeldet und der Bericht enthält MQRO_COD_WITH_FULL_DATA
- Es wird MQFB_COA zurückgemeldet und der Bericht enthält MQRO_COA_WITH_FULL_DATA
- Liegt einer der folgenden Fälle vor, werden die ersten 100 Byte der
Nachricht (oder BufferLength bei weniger als 100) aus dem Puffer
verwendet
- Es wird MQFB_EXPIRATION zurückgemeldet und der Bericht enthält MQRO_EXPIRATION_WITH_DATA
- Es wird MQFB_COD zurückgemeldet und der Bericht enthält MQRO_COD_WITH_DATA
- Es wird MQFB_COA zurückgemeldet und der Bericht enthält MQRO_COA_WITH_DATA
- Wird MQFB_EXPIRATION, MQFB_COD oder MQFB_COA zurückgemeldet und der Bericht enthält nicht die relevanten Optionen *_WITH_FULL_DATA oder *_WITH_DATA für diesen Feedback-Wert, werden keine Benutzerdaten in die Nachricht aufgenommen.
- Wird ein anderer Wert als die oben angegebenen zurückgemeldet, werden normal Buffer und BufferLength verwendet.
Tabelle 3. Quelle der Benutzerdaten MQFB_COA MQFB_COD MQFB_EXPIRATION MQRO_EXPIRATION_WITH_FULL_DATA Keine Angabe Keine Angabe Buffer(Bufferlength) MQRO_COD_WITH_FULL_DATA Keine Angabe Buffer(Bufferlength) Keine Angabe MQRO_COA_WITH_FULL_DATA Buffer(Bufferlength) Keine Angabe Keine Angabe MQRO_EXPIRATION_WITH_DATA Keine Angabe Keine Angabe Buffer(erste 100 Byte) MQRO_COD_WITH_DATA Keine Angabe Buffer(erste 100 Byte) Keine Angabe MQRO_COA_WITH_DATA Buffer(erste 100 Byte) Keine Angabe Keine Angabe
Referenz