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