Spring AMQP项目(四)中,有哪些关键特性或应用场景?

2026-05-26 02:582阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计808个文字,预计阅读时间需要4分钟。

Spring AMQP项目(四)中,有哪些关键特性或应用场景?

4.1.12 代理事件监听器+启用事件交换插件后,若将特定类型的Bean添加到应用程序中,它将自动选择代理事件并发布为实例。这些实例可使用常规的Spring方法或技术使用。事件由代理生成。

Spring AMQP项目(四)中,有哪些关键特性或应用场景?

4.1.12. 代理事件侦听器

启用事件交换插件后,如果将类型的 Bean 添加到应用程序上下文中,它将选定的代理事件发布为实例,这些实例可以使用普通的 Spring 或方法使用。 事件由代理发布到主题交换,每个事件类型使用不同的路由密钥。 侦听器使用事件键,这些键用于将 绑定到交换,以便侦听器仅接收选定的事件。 由于它是主题交换,因此可以使用通配符(以及显式请求特定事件),如以下示例所示:​​BrokerEventListener​​​​BrokerEvent​​​​ApplicationListener​​​​@EventListener​​​​amq.rabbitmq.event​​​​AnonymousQueue​​

@Beanpublic BrokerEventListener eventListener() { return new BrokerEventListener(connectionFactory(), "user.deleted", "channel.#", "queue.#");}

您可以使用常规的 Spring 技术进一步缩小单个事件侦听器中接收的事件的范围,如以下示例所示:

@EventListener(condition = "event.eventType == 'queue.created'")public void listener(BrokerEvent event) { ...}

4.1.13. 延迟消息交换

版本 1.6 引入了对延迟消息交换插件的支持

该插件目前被标记为实验性,但已经可用一年多(在撰写本文时)。 如果有必要对插件进行更改,我们计划尽快添加对此类更改的支持。 出于这个原因,Spring AMQP中的这种支持也应该被认为是实验性的。 此功能已通过 RabbitMQ 3.6.0 和插件版本 0.0.1 进行了测试。

要使用 将交换声明为延迟,可以将交换 Bean 上的属性设置为 。 使用 交换类型 (、 等) 来设置参数和 声明与类型 的交换。​​RabbitAdmin​​​​delayed​​​​true​​​​RabbitAdmin​​​​Direct​​​​Fanout​​​​x-delayed-type​​​​x-delayed-message​​

该属性(缺省值:)在使用 XML 配置交换 Bean 时也可用。 以下示例演示如何使用它:​​delayed​​​​false​​

<rabbit:topic-exchange name="topic" delayed="true" />

要发送延迟消息,可以通过 设置标头,如以下示例所示:​​x-delay​​​​MessageProperties​​

MessageProperties properties = new MessageProperties();properties.setDelay(15000);template.send(exchange, routingKey, MessageBuilder.withBody("foo".getBytes()).andProperties(properties).build());rabbitTemplate.convertAndSend(exchange, routingKey, "foo", new MessagePostProcessor() { @Override public Message postProcessMessage(Message message) throws AmqpException { message.getMessageProperties().setDelay(15000); return message; }});

要检查消息是否延迟,请使用 上的方法。 它是一个单独的属性,用于避免意外传播到从输入消息生成的输出消息。​​getReceivedDelay()​​​​MessageProperties​​

4.1.14. 兔子MQ REST API

启用管理插件后,RabbitMQ 服务器会公开一个 REST API 来监控和配置代理。 现在提供了API 的 Java 绑定。 这是一个标准的、即时的,因此是阻塞的 API。 它基于Spring Web模块及其实现。 另一方面,这是一个基于Reactor Netty项目的响应式、非阻塞实现。​​com.rabbitmq.www.1234xp.com/jianhu.html 欢迎留下您的宝贵建议】

本文共计808个文字,预计阅读时间需要4分钟。

Spring AMQP项目(四)中,有哪些关键特性或应用场景?

4.1.12 代理事件监听器+启用事件交换插件后,若将特定类型的Bean添加到应用程序中,它将自动选择代理事件并发布为实例。这些实例可使用常规的Spring方法或技术使用。事件由代理生成。

Spring AMQP项目(四)中,有哪些关键特性或应用场景?

4.1.12. 代理事件侦听器

启用事件交换插件后,如果将类型的 Bean 添加到应用程序上下文中,它将选定的代理事件发布为实例,这些实例可以使用普通的 Spring 或方法使用。 事件由代理发布到主题交换,每个事件类型使用不同的路由密钥。 侦听器使用事件键,这些键用于将 绑定到交换,以便侦听器仅接收选定的事件。 由于它是主题交换,因此可以使用通配符(以及显式请求特定事件),如以下示例所示:​​BrokerEventListener​​​​BrokerEvent​​​​ApplicationListener​​​​@EventListener​​​​amq.rabbitmq.event​​​​AnonymousQueue​​

@Beanpublic BrokerEventListener eventListener() { return new BrokerEventListener(connectionFactory(), "user.deleted", "channel.#", "queue.#");}

您可以使用常规的 Spring 技术进一步缩小单个事件侦听器中接收的事件的范围,如以下示例所示:

@EventListener(condition = "event.eventType == 'queue.created'")public void listener(BrokerEvent event) { ...}

4.1.13. 延迟消息交换

版本 1.6 引入了对延迟消息交换插件的支持

该插件目前被标记为实验性,但已经可用一年多(在撰写本文时)。 如果有必要对插件进行更改,我们计划尽快添加对此类更改的支持。 出于这个原因,Spring AMQP中的这种支持也应该被认为是实验性的。 此功能已通过 RabbitMQ 3.6.0 和插件版本 0.0.1 进行了测试。

要使用 将交换声明为延迟,可以将交换 Bean 上的属性设置为 。 使用 交换类型 (、 等) 来设置参数和 声明与类型 的交换。​​RabbitAdmin​​​​delayed​​​​true​​​​RabbitAdmin​​​​Direct​​​​Fanout​​​​x-delayed-type​​​​x-delayed-message​​

该属性(缺省值:)在使用 XML 配置交换 Bean 时也可用。 以下示例演示如何使用它:​​delayed​​​​false​​

<rabbit:topic-exchange name="topic" delayed="true" />

要发送延迟消息,可以通过 设置标头,如以下示例所示:​​x-delay​​​​MessageProperties​​

MessageProperties properties = new MessageProperties();properties.setDelay(15000);template.send(exchange, routingKey, MessageBuilder.withBody("foo".getBytes()).andProperties(properties).build());rabbitTemplate.convertAndSend(exchange, routingKey, "foo", new MessagePostProcessor() { @Override public Message postProcessMessage(Message message) throws AmqpException { message.getMessageProperties().setDelay(15000); return message; }});

要检查消息是否延迟,请使用 上的方法。 它是一个单独的属性,用于避免意外传播到从输入消息生成的输出消息。​​getReceivedDelay()​​​​MessageProperties​​

4.1.14. 兔子MQ REST API

启用管理插件后,RabbitMQ 服务器会公开一个 REST API 来监控和配置代理。 现在提供了API 的 Java 绑定。 这是一个标准的、即时的,因此是阻塞的 API。 它基于Spring Web模块及其实现。 另一方面,这是一个基于Reactor Netty项目的响应式、非阻塞实现。​​com.rabbitmq.www.1234xp.com/jianhu.html 欢迎留下您的宝贵建议】