13.3. アノテーションを基にした AMQP メッセージのフィルター
ブローカーは、期限切れの AMQP メッセージまたは未配信の AMQP メッセージを、設定した期限切れまたはデッドレターキューに移動する前に、アノテーションおよびプロパティーをメッセージに適用します。クライアントはこれらのプロパティーまたはアノテーションに基づいてフィルターを作成し、期限切れまたはデッドレターキューから消費する特定のメッセージを選択できます。
ブローカーが適用されるプロパティーは 内部 プロパティーです。これらのプロパティーは、通常の使用のためにクライアントに公開されませんが、フィルターのクライアントで指定できます。
以下は、メッセージプロパティーとアノテーションに基づくフィルターの例です。このアプローチではブローカーによる処理が少なくなるため、プロパティーに基づくフィルターリングは可能な場合に推奨される方法です。
メッセージプロパティーを基にしたフィルター
ConnectionFactory factory = new JmsConnectionFactory("amqp://localhost:5672"); Connection connection = factory.createConnection(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); connection.start(); javax.jms.Queue queue = session.createQueue("my_DLQ"); MessageConsumer consumer = session.createConsumer(queue, "_AMQ_ORIG_ADDRESS='original_address_name'"); Message message = consumer.receive();
メッセージのアノテーションに基づくフィルター
ConnectionFactory factory = new JmsConnectionFactory("amqp://localhost:5672"); Connection connection = factory.createConnection(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); connection.start(); javax.jms.Queue queue = session.createQueue("my_DLQ"); MessageConsumer consumer = session.createConsumer(queue, "\"m.x-opt-ORIG-ADDRESS\"='original_address_name'"); Message message = consumer.receive();
アノテーションに基づいて AMQP メッセージを消費する場合、クライアントには前述の例に示されるように m.
接頭辞をメッセージアノテーションに追加する必要があります。
関連情報
- ブローカーが期限切れの AMQP メッセージまたは未配信の AMQP メッセージに適用するアノテーションおよびプロパティーに関する詳細は、「期限切れまたは未配信の AMQP メッセージに対するアノテーションおよびプロパティー」 を参照してください。