程序化端点注册
RabbitListenerEndpoint 提供了一个 Rabbit 端点的模型,并负责为该模型配置容器。基础设施允许你以编程方式配置端点,除了那些通过 RabbitListener 注解检测到的端点。以下示例展示了如何做到这一点:
@Configuration
@EnableRabbit
public class AppConfig implements RabbitListenerConfigurer {
@Override
public void configureRabbitListeners(RabbitListenerEndpointRegistrar registrar) {
SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint();
endpoint.setId("someRabbitListenerEndpoint");
endpoint.setQueueNames("anotherQueue");
endpoint.setMessageListener(message -> {
// processing
});
registrar.registerEndpoint(endpoint);
}
}
在前面的例子中,我们使用了 SimpleRabbitListenerEndpoint,它提供了要调用的实际 MessageListener,但你同样可以构建自己的端点变体来描述自定义的调用机制。
备注
SimpleRabbitListenerEndpoint 定义中,id 属性是必需的。
需要注意的是,你也可以完全跳过使用 @RabbitListener,而是通过 RabbitListenerConfigurer 以编程方式注册你的端点。