È possibile monitorare una coda e trasferire messaggi dalla coda monitorata a un file utilizzando il comando fteCreateMonitor . Il valore di qualsiasi proprietà del messaggio IBM® MQ nel primo messaggio da leggere dalla coda monitorata può essere sostituito nella definizione XML dell'attività e utilizzato per definire il comportamento del trasferimento.
Informazioni su questa attività
In questo esempio, l'agent di origine è denominato AGENT_VENUS, che si connette a QM_VENUS. La coda monitorata da AGENT_VENUS è denominata START_QUEUE e si trova su QM_VENUS. L'agent esegue il polling della coda ogni 30 minuti.Quando un gruppo completo di messaggi viene scritto nella coda, l'attività di monitoraggio invia il gruppo di messaggi a uno dei diversi agent di destinazione, tutti connessi al gestore code QM_MARS. Il nome del file a cui viene trasferito il gruppo di messaggi è definito dalla proprietà del messaggio IBM MQ usr.fileName sul primo messaggio del gruppo. Il nome dell'agent a cui viene inviato il gruppo di messaggi è definito dalla IBM MQ proprietà del messaggio usr.toAgent nel primo messaggio del gruppo. Se l'intestazione usr.toAgent non è impostata, il valore predefinito da utilizzare per l'agent di destinazione è AGENT_MAGENTA.
Quando si specifica useGroups=true
, se non si specifica anche groupId=${GROUPID}
, il trasferimento acquisisce solo il primo messaggio sulla coda. Ad esempio, se si utilizza la sostituzione di variabili per generare il fileName, è possibile che il contenuto di 'a.txt non sia corretto. Ciò è dovuto al fatto che fileName viene generato dal monitoraggio, ma il trasferimento in realtà riceve un messaggio che non è quello che dovrebbe generare il file denominato fileName.
Procedura
- Creare l'attività XML che definisce l'attività eseguita dal monitoraggio quando viene attivato.
<?xml version="1.0" encoding="UTF-8" ?>
<request version="4.00"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="FileTransfer.xsd">
<managedTransfer>
<originator>
<hostName>reportserver.com</hostName>
<userID>USER1</userID>
</originator>
<sourceAgent agent="AGENT_VENUS" QMgr="QM_VENUS"/>
<destinationAgent agent="${toAgent}" QMgr="QM_MARS"/>
<transferSet>
<item mode="binary" checksumMethod="none">
<source>
<queue useGroups="true" groupId="${GROUPID}">START_QUEUE</queue>
</source>
<destination type="file" exist="overwrite">
<file>/reports/${fileName}.rpt</file>
</destination>
</item>
</transferSet>
</managedTransfer>
</request>
Le variabili che vengono sostituite con i valori delle intestazioni dei messaggi IBM MQ sono evidenziati in grassetto. Questa attività XML viene salvata nel file /home/USER1/task.xml
- Creare un monitoraggio risorse per monitorare la coda START_QUEUE.
Immettere il seguente comando:
fteCreateMonitor -ma AGENT_VENUS -mm QM_VENUS -mq START_QUEUE
-mn myMonitor -mt /home/USER1/task.xml
-tr completeGroups -pi 30 -pu minutes -dv toAgent=AGENT_MAGENTA
- Un utente o un programma scrive un gruppo di messaggi nella coda START_QUEUE.
Il primo messaggio in questo gruppo ha le seguenti proprietà
IBM MQ impostate:
usr.fileName=larmer
usr.toAgent=AGENT_VIOLET
- Il controllo viene attivato quando viene scritto il gruppo completo. L'agent sostituisce le proprietà del messaggio IBM MQ nell'XML dell'attività.
Ciò determina la trasformazione dell'attività XML in:
<?xml version="1.0" encoding="UTF-8" ?>
<request version="4.00"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="FileTransfer.xsd">
<managedTransfer>
<originator>
<hostName>reportserver.com</hostName>
<userID>USER1</userID>
</originator>
<sourceAgent agent="AGENT_VENUS" QMgr="QM_VENUS"/>
<destinationAgent agent="AGENT_VIOLET" QMgr="QM_MARS"/>
<transferSet>
<item mode="binary" checksumMethod="none">
<source>
<queue useGroups="true" groupId="${GROUPID}">START_QUEUE</queue>
</source>
<destination type="file" exist="overwrite">
<file>/reports/larmer.rpt</file>
</destination>
</item>
</transferSet>
</managedTransfer>
</request>
Risultati
Viene effettuato il trasferimento definito dall'attività XML. Il gruppo completo di messaggi letti da START_QUEUE da AGENT_VENUS viene scritto in un file denominato /reports/larmer.rpt sul sistema su cui è in esecuzione AGENT_VIOLET.
Cosa fare successivamente
Trasferimento di ogni messaggio in un file separato Se si desidera monitorare una coda e trasferire ogni messaggio in un file separato, è possibile utilizzare una tecnica simile a quella descritta in precedenza in questo argomento.
- Creare il controllo come descritto in precedenza, specificando il parametro -tr
completeGroups nel comando fteCreateMonitor .
- Nell'XML dell'attività specificare quanto segue:
<queue useGroups="true" groupId="${GROUPID}">START_QUEUE</queue>
Tuttavia, quando si inserono i messaggi nella coda di origine, non inserirli nel gruppo
IBM MQ . Aggiungere le proprietà del messaggio
IBM MQ a ciascun messaggio. Ad esempio, specificare la proprietà
usr.filename con un valore di nome file univoco per ogni messaggio. In tal modo, l'agent
IBM MQ Managed File Transfer considera ciascun messaggio sulla coda di origine come un gruppo separato.