メッセージ・フローがデプロイされた後にイベントをカスタマイズする一方、フローの再デプロイはしない場合は、モニター・プロファイル構成可能サービスを使用してください。 このサービスを使用して、モニター・プロファイルを 1 つ以上のメッセージ・フローに適用できます。
構造を例示するために、1 つのイベント・ソースが入っているモニター・プロファイルの概要を以下に示します。
<p:monitoringProfile
xmlns:p="http://www.ibm.com/xmlns/prod/websphere/messagebroker/6.1.0.3/monitoring/profile" p:version="2.0">
<p:eventSource p:enabled="true" p:eventSourceAddress="SOAPInput.transaction.Start">
<p:eventPointDataQuery>
<p:eventIdentity>
<p:eventName p:literal="" p:queryText=""/>
</p:eventIdentity>
<p:eventCorrelation>
<p:localTransactionId p:queryText="" p:sourceOfId="automatic"/>
<p:parentTransactionId p:queryText="" p:sourceOfId="automatic"/>
<p:globalTransactionId p:queryText="" p:sourceOfId="automatic"/>
</p:eventCorrelation>
<p:eventFilter p:queryText="true()"/> <p:eventUOW p:unitOfWork="messageFlow" /> </p:eventPointDataQuery>
<p:applicationDataQuery>
<p:simpleContent p:dataType="boolean" p:name="" p:targetNamespace="">
<p:valueQuery p:queryText=""/>
</p:simpleContent>
<p:complexContent p:name="" targetNamespace="">
<p:payloadQuery p:queryText=""/>
</p:complexContent>
</p:applicationDataQuery>
<p:bitstreamDataQuery p:bitstreamContent="all" p:encoding="base64Binary"/>
</p:eventSource>
</p:monitoringProfile>
モニター・プロファイルの作成に役立つ情報として、以下のサンプルには、モニター・プロファイル XML ファイルおよびモニター・プロファイル XML スキーマ・ファイル (MonitoringProfile.xsd) の概要が含まれています。
モニター・プロファイルが正しいかどうかを、XML スキーマに照らして検証します。
サンプルに関する情報は、WebSphere Message Broker Toolkit に統合されているインフォメーション・センター、またはオンライン・インフォメーション・センターを使用する場合にのみ表示できます。 サンプルは、WebSphere Message Broker Toolkit に統合されているインフォメーション・センターを使用する場合にのみ実行できます。
以下のステップでは、モニター・プロファイル XML を作成する方法を説明します。 それぞれの p:eventSource エレメントに対して、以下の手順に従ってください。
イベント・タイプ | イベント・ソース・アドレス |
---|---|
トランザクション開始イベント | nodelabel.transaction.Start |
トランザクション終了イベント | nodelabel.transaction.End |
トランザクション・ロールバック・イベント | nodelabel.transaction.Rollback |
ターミナル・イベント | nodelabel.terminal.<Terminal> |
発行されたイベント内では、イベント・ソースのアドレス・ストリングは wmb:eventData/@wmb:eventSourceAddress 属性内で設定されます。
発行されたイベント内では、イベント名は wmb:eventPointData/wmb:eventIdentity/@wmb:eventName 属性内で設定されます。
p:eventName エレメントが提供されていない場合、発行されたイベント内の @wmb:eventName はデフォルトで @p:eventSourceAddress になります。
この機能を利用すれば、一連の規則と一致しないイベントをフィルターすることにより、ビジネス要件に合わせてイベントの発行を調整できます。 これによって、発行されるイベントの数が減るため、モニター・アプリケーションへのワークロードを低減できます。
この機能は、ビジネス・イベントで重要なビジネス・データを通信するために、一般的に使用されます。 イベントが入力ビット・ストリームを含む場合、この機能はキー・フィールドを抽出するためにも使用できます。 その場合、別のアプリケーションが監査証跡を提供したり、障害が生じたメッセージを再サブミットしたりすることが可能になります。
発行されたイベント内では、抽出されたデータは wmb:applicationData/wmb:simpleContent および wmb:applicationData/wmb:complexContent エレメント内で設定されます。
発行されたイベント内では、抽出されたビット・ストリーム・データは wmb:bitstreamData/wmb:bitstream エレメント内で設定されます。
発行されるすべてのモニター・イベントには、最大 3 つの相関属性を含めることができます。 モニター・プロファイル内で相関情報が指定されていない場合、相関属性は使用されません。
トランザクション開始イベントがメッセージ・フローの作業単位に含まれるように指定されているのに、メッセージ処理が失敗し、この作業単位がパブリッシュされない場合、トランザクション開始イベントは独立した作業単位に含まれます。 これによりモニター・アプリケーションは、ロールバック・イベントを個別に受信するのではなく、イベントのペア (開始およびロールバック) を受信するようになります。
独立したトランザクションは、メインのトランザクションがコミットされるかロールバックされている場合のみ、開始できます。 フローの「コミット・カウント」プロパティーが 1 より大きい (構成可能な「メッセージ・フロー」プロパティー) か、「メッセージ・グループ別にコミット」が設定されている場合 (WebSphere MQ メッセージ・グループ内のメッセージの受信)、独立したトランザクションをターゲットとするイベントは代わりに同期点以外から発行され、発行されたことを示すメッセージが出力されます。
イベント・タイプ | 使用可能な値 |
---|---|
transaction.Start |
|
transaction.End |
|
transaction.Rollback |
|
ターミナル (terminal) |
|
XPath 照会が XML ネーム・スペースを持つコンポーネントを含んでいる場合、XPath はネーム・スペース用のネーム・スペース接頭部を含みます。 例えば、以下の XPath は 2 つの異なるネーム・スペース内のコンポーネントを参照します。
<p:localTransactionId p:sourceOfId="query" p:queryText="$Body/soapenv:Header/wsa:messageID" />
ブローカーがネーム・スペース接頭部を解決するように、ネーム・スペース URL も提供する必要があります。 それぞれのネーム・スペースの接頭部マッピング・エレメントを以下のように提供します。
<p:localTransactionId p:sourceOfId="query" p:queryText="$Body/soapenv:Header/wsa:messageID">
<p:prefixMapping p:prefix="soapenv" p:URI="http://www.w3.org/2003/05/soap-envelope" />
<p:prefixMapping p:prefix="wsa" p:URI="http://www.w3.org/2005/08/addressing" />
</p:localTransactionId>
モニター・プロファイル 1: 2 つのイベント・ソースが各々 1 つのイベント名を提供
<p:monitoringProfile p:version="2.0">
<p:eventSource p:eventSourceAddress="SOAPInput.transaction.Start">
<p:eventPointDataQuery>
<p:eventIdentity>
<p:eventName p:literal="SOAP start event"/>
</p:eventIdentity>
</p:eventPointDataQuery>
</p:eventSource>
<p:eventSource p:eventSourceAddress="SOAPInput.transaction.End">
<p:eventPointDataQuery>
<p:eventIdentity>
<p:eventName p:literal="SOAP end event"/>
</p:eventIdentity>
</p:eventPointDataQuery>
</p:eventSource>
</p:monitoringProfile>
<p:monitoringProfile p:version="2.0">
<p:eventSource p:eventSourceAddress="SOAPInput.transaction.Start">
<p:eventPointDataQuery>
<p:eventCorrelation>
<p:localTransactionId p:queryText="$Body/soapenv:Header/wsa:messageID" p:sourceOfId="query">
<p:prefixMapping p:prefix="soapenv" p:URI="http://www.w3.org/2003/05/soap-envelope"/>
<p:prefixMapping p:prefix="wsa" p:URI="http://www.w3.org/2005/08/addressing"/>
</p:localTransactionId>
</p:eventCorrelation>
</p:eventPointDataQuery>
</p:eventSource>
</p:monitoringProfile>
<p:monitoringProfile p:version="2.0">
<p:eventSource p:eventSourceAddress="MQInput.terminal.out">
<p:applicationDataQuery>
<p:simpleContent p:dataType="integer" p:name="InvoiceNumber">
<p:valueQuery p:queryText="$Body/invoice/invoiceNo"/>
</p:simpleContent>
<p:simpleContent p:dataType="string" p:name="BatchID">
<p:valueQuery p:queryText="$Body/batch/batchNo"/>
</p:simpleContent>
</p:applicationDataQuery>
</p:eventSource>
</p:monitoringProfile>
<p:monitoringProfile p:version="2.0">
<p:eventSource p:eventSourceAddress="MQInput.terminal.out">
<p:bitstreamDataQuery p:bitstreamContent="body" p:encoding="CDATA"/>
</p:eventSource>
</p:monitoringProfile>
CDATA エンコード方式はすべてのタイプのデータにおいて適切であるわけではありません。
@p:bitstreamContent="body" の場合には、CDATA のみを使用してください。 XML では許容されない文字がメッセージ・ビット・ストリームに含まれる可能性がある場合には、CDATA を使用しないでください (http://www.w3.org/TR/2006/REC-xml-20060816/#charsets を参照)。