搜索

13.3. 根据注释上的属性过滤 AMQP 消息

download PDF

在将过期或未提供 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. 前缀附加到消息注解中,如上例中所示。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.