Broker 事件监听器
启用 Event Exchange Plugin 后,如果你向应用程序上下文添加一个 BrokerEventListener 类型的 bean,它会将选定的 broker 事件发布为 BrokerEvent 实例,可以用普通的 Spring ApplicationListener 或 @EventListener 方法消费这些事件。broker 将事件发布到 topic 交换机 amq.rabbitmq.event,每种事件类型对应不同的路由键。监听器使用事件键,这些键用于将 AnonymousQueue 绑定到该交换机,从而使监听器只接收选定的事件。由于它是 topic 交换机,可以使用通配符(也可以显式请求特定事件),如下例所示:
@Bean
public BrokerEventListener eventListener() {
return new BrokerEventListener(connectionFactory(), "user.deleted", "channel.#", "queue.#");
}
你还可以使用普通的 Spring 技巧,在各个事件监听器中进一步缩小接收到的事件范围,如下例所示:
@EventListener(condition = "event.eventType == 'queue.created'")
public void listener(BrokerEvent event) {
...
}