第20章 事前承認の設定

JMS は次の 3 つの承認モードを指定します。

  • AUTO_ACKNOWLEDGE
  • CLIENT_ACKNOWLEDGE
  • DUPS_OK_ACKNOWLEDGE

場合によっては、障害発生時にメッセージを失い、メッセージをクライアントに配信する前にサーバーでメッセージを承認することが適切なことがあります。この特別なモードは JBoss EAP メッセージングによってサポートされ、pre-acknowledge モードと呼ばれます。

配信前にサーバーで事前承認する欠点は、サーバーでメッセージを承認してからクライアントへ配信されるまでにサーバーのシステムがクラッシュした場合に、メッセージが失われることです。この場合、システムの再起動時にメッセージが失われ、復元されません。

メッセージングのケースに応じて、事前承認モードでは、メッセージが失われることがある代わりに、余分なネットワークトラフィックと CPU 使用率を回避できます。

事前承認の使用例は、株価更新メッセージです。これらのメッセージでは、クラッシュ時にメッセージが失われる適切な場合があります。これは、次の株価更新メッセージがすぐに到達し、前の株価を上書きするためです。

注記

事前承認モードを使用する場合は、消費されるメッセージのトランザクションセマンティクスが失われます。これは、メッセージが、トランザクションをコミットしたときではなく、サーバーで最初に承認されるためです。

20.1. サーバーの設定

以下のように管理 CLI を使用して pre-acknowledge 属性を true に設定すると、接続ファクトリーを事前承認モードを使用するように設定できます。

/subsystem=messaging-activemq/server=default/connection-factory=RemoteConnectionFactory:write-attribute(name=pre-acknowledge,value=true)