ご使用のブローカー・ドメインを通してフローするメッセージを保護することは重要です。 これは、アプリケーション生成メッセージおよびコンポーネント間通信で内部的に使用されるメッセージの両方に当てはまります。 コンポーネント間で内部的に使用されるメッセージでは、必ず WebSphere MQ プロトコルが使用されます。アプリケーション・メッセージでは、サポートされるすべてのトランスポート・プロトコルを使用できます。
アプリケーション・メッセージおよび内部メッセージが WebSphere MQ を通過する際に、以下の二つの技法でメッセージの損失を防ぎます。
メッセージが持続的なものである場合、WebSphere MQ は、これをディスクにコピーすることによって、 障害が発生してもメッセージが失われないようにします。
アプリケーションは、同期化された作業単位 (UOW) でメッセージが処理されるように要求できます。
これらのオプションを使用する方法については、WebSphere MQシステム管理ガイド を参照してください。
WebSphere Message Broker コンポーネントは、WebSphere MQ メッセージを使用して、 ブローカー・プロセスとサブシステム、および構成マネージャーとユーザー・ネーム・サーバーの間でイベントやデータの通信を行います。コンポーネントは WebSphere MQ 機能を活用して、 メッセージが失われることがないようにします。内部メッセージの損失を防ぐために、 何か付加的なステップを実行して WebSphere MQ や WebSphere Message Broker を構成する必要はありません。
アプリケーション・メッセージの送達が非常に重要である場合は、 使用されるアプリケーション・プログラムとメッセージ・フローを、 決してメッセージが失われないように設計する必要があります。 使用される技法は、アプリケーションによって使用されるプロトコルによって異なります。
WebSphere MQ メッセージング製品は、メッセージ持続性を提供します。 システム内のメッセージの長時間持続を定義し、メッセージの保全性を保証します。非持続メッセージは、システムまたはキュー・マネージャーの障害イベントの際に失われます。 持続メッセージは、障害が発生した場合に、必ず回復します。
入力ノードが入力キューからメッセージを読み取る場合、 デフォルトのアクションは、WebSphere MQ メッセージ・ヘッダー (MQMD) で定義された持続性を使用します。 この持続性は、メッセージを作成するアプリケーションか、 または入力キューのデフォルトの持続性のいずれかによって設定されます。メッセージはこの持続性を、後続のメッセージ処理ノードで変更されるのでない限り、メッセージ・フロー全体で保存します。
出力ノードでメッセージ・フローが終了する際に、 それぞれのメッセージの持続性値を指定変更することができます。 このノードには、それが出力キューに置かれる際に、必須値またはデフォルト値のいずれかとして、 それぞれのメッセージのメッセージ持続性を指定することのできるプロパティーがあります。 デフォルトを指定した場合は、メッセージの書き込み先であるキューに定義された持続性値を、 メッセージは採用します。
メッセージが Publication ノードを通過する場合、サブスクライバーに送られたメッセージの持続性は、 サブスクライバーの登録オプションによって決定されます。 サブスクライバーが持続メッセージの配信を要求しており、 明示または暗黙 (継承された) ACL によってそれを行う許可がサブスクライバーに付与されている場合には、 既存の持続性プロパティーに関係なく、メッセージは持続的に配信されます。 また、要求された非持続メッセージの配信がユーザーにある場合には、 既存の持続性プロパティーに関係なく、メッセージは非持続的に配信されます。
メッセージ・フローによって新しいメッセージが作成される場合は (例えば、Compute ノードにおいて)、 着信メッセージの MQMD の持続性が、新しいメッセージの MQMD の持続性としてコピーされます。
メッセージ・フローのデフォルトのアクションは、 ブローカーによって制御されるトランザクションの同期点の下で着信メッセージを処理します。 このため、何らかの理由で処理に失敗したメッセージは、 ブローカーによってバックアウトされることになります。 このメッセージは同期点の下で受信されたため、 失敗したメッセージは入力キュー上に復元され、もう一度処理できるようになります。 処理が失敗した場合には、このメッセージ・フローに適切なエラー処理プロシージャー (メッセージ・フローを構成した仕方、またはブローカーのいずれかによって定義される) が実行されます。
入力ノード処理の詳細については、入力ノードにあるエラーの管理を参照してください。
持続性のある SCADA メッセージがパブリッシュされる場合は、 クライアントが受け入れることのできる、最も高いレベルに格下げされます。 これは、状況によっては、メッセージが非持続になる場合もあることを意味します。