第11章 メッセージのインターセプト
AMQ Broker では、ブローカーに出入りするパケットをインターセプトして、パケットの監査やメッセージのフィルタリングを実行できます。インターセプターはインターセプトしたパケットを変更できます。そのため、インターセプターは強力ですが、潜在的に危険なものでもあります。
ビジネス要件を満たすためのインターセプターを開発できます。インターセプターはプロトコル固有であり、適切なインターフェイスを実装する必要があります。
インターセプターは、ブール値を返す intercept()
メソッドを実装する必要があります。値が true
の場合、メッセージパケットは続行されます。false
の場合、プロセスは中止され、他のインターセプターは呼び出されず、メッセージパケットはこれ以上処理されません。
11.1. インターセプターの作成 リンクのコピーリンクがクリップボードにコピーされました!
独自の受信インターセプターおよび発信インターセプターを作成できます。すべてのインターセプターはプロトコル固有であり、サーバーに出入りするすべてのパケットに対して呼び出されます。これにより、監査パケットなどのビジネス要件を満たすインターセプターを作成できます。
インターセプターは、インターセプトしたパケットを変更できます。そのため、インターセプターは強力ですが、潜在的に危険なものでもあるため、注意して使用してください。
インターセプターとその依存関係をブローカーの Java クラスパスに配置する必要があります。<broker_instance_dir>/lib
ディレクトリーは、デフォルトでクラスパスに含まれているため、使用することができます。
手順
次の例は、渡される各パケットのサイズをチェックするインターセプターを作成する方法を示しています。
適切なインターフェイスを実装し、その
intercept()
メソッドをオーバーライドします。AMQP プロトコルを使用している場合は、
org.apache.activemq.artemis.protocol.amqp.broker.AmqpInterceptor
インターフェイスを実装してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Core Protocol を使用している場合、インターセプターは、
org.apache.artemis.activemq.api.core.Interceptor
インターフェイスを実装する必要があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow MQTT プロトコルを使用している場合は、
org.apache.activemq.artemis.core.protocol.mqtt.MQTTInterceptor
インターフェイスを実装してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow STOMP プロトコルを使用している場合は、
org.apache.activemq.artemis.core.protocol.stomp.StompFrameInterceptor
インターフェイスを実装してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow