对于最新稳定版本,请使用Spring AMQP 4.0.0spring-doc.cadn.net.cn

利用集装箱工厂

为支持,@RabbitListener以及与RabbitListenerEndpointRegistry如程序化端点注册中所述。spring-doc.cadn.net.cn

从2.1版本开始,它们可以用来创建任何监听器容器——甚至是没有监听器的容器(比如用于Spring Integration)。 当然,在容器启动前必须添加一个监听器。spring-doc.cadn.net.cn

创建此类容器有两种方式:spring-doc.cadn.net.cn

以下示例展示了如何使用SimpleRabbitListenerEndpoint创建监听器容器:spring-doc.cadn.net.cn

@Bean
public SimpleMessageListenerContainer factoryCreatedContainerSimpleListener(
        SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory) {
    SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint();
    endpoint.setQueueNames("queue.1");
    endpoint.setMessageListener(message -> {
        ...
    });
    return rabbitListenerContainerFactory.createListenerContainer(endpoint);
}

以下示例展示了创建后如何添加监听器:spring-doc.cadn.net.cn

@Bean
public SimpleMessageListenerContainer factoryCreatedContainerNoListener(
        SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory) {
    SimpleMessageListenerContainer container = rabbitListenerContainerFactory.createListenerContainer();
    container.setMessageListener(message -> {
        ...
    });
    container.setQueueNames("test.no.listener.yet");
    return container;
}

无论哪种情况,监听者也可以是频道意识信息听众,因为它现在是 的子接口消息监听器.spring-doc.cadn.net.cn

如果你想创建多个具有相似属性的容器,或使用预配置的容器工厂(如 Spring Boot 自动配置提供的),这些技术非常有用。spring-doc.cadn.net.cn

用这种方式创建的容器是正常的@Bean实例和未被登记在RabbitListenerEndpointRegistry.