|
对于最新稳定版本,请使用Spring AMQP 4.0.0! |
利用集装箱工厂
为支持,@RabbitListener以及与RabbitListenerEndpointRegistry如程序化端点注册中所述。
从2.1版本开始,它们可以用来创建任何监听器容器——甚至是没有监听器的容器(比如用于Spring Integration)。 当然,在容器启动前必须添加一个监听器。
创建此类容器有两种方式:
-
使用 SimpleRabbitListenerEndpoint
-
创建后添加监听器
以下示例展示了如何使用SimpleRabbitListenerEndpoint创建监听器容器:
@Bean
public SimpleMessageListenerContainer factoryCreatedContainerSimpleListener(
SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory) {
SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint();
endpoint.setQueueNames("queue.1");
endpoint.setMessageListener(message -> {
...
});
return rabbitListenerContainerFactory.createListenerContainer(endpoint);
}
以下示例展示了创建后如何添加监听器:
@Bean
public SimpleMessageListenerContainer factoryCreatedContainerNoListener(
SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory) {
SimpleMessageListenerContainer container = rabbitListenerContainerFactory.createListenerContainer();
container.setMessageListener(message -> {
...
});
container.setQueueNames("test.no.listener.yet");
return container;
}
无论哪种情况,监听者也可以是频道意识信息听众,因为它现在是 的子接口消息监听器.
如果你想创建多个具有相似属性的容器,或使用预配置的容器工厂(如 Spring Boot 自动配置提供的),这些技术非常有用。
用这种方式创建的容器是正常的@Bean实例和未被登记在RabbitListenerEndpointRegistry. |