【发布时间】:2016-02-25 12:27:59
【问题描述】:
即使 RabbitMQ 消息代理关闭,是否可以使用 @RabbitListener 加载 spring 上下文? 该行为应该与代理断开连接的情况类似。应用程序正在等待代理,当它恢复时,侦听器会自动重新连接。
Spring Boot 1.3.2.RELEASE
spring-amqp 配置:
@Bean
public MessageConverter jsonMessageConverter() {
return new JsonMessageConverter();
}
@Bean
public ConnectionFactory connectionFactory() {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory(host);
connectionFactory.setUsername(username);
connectionFactory.setPassword(password);
return connectionFactory;
}
@Bean
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory());
factory.setConcurrentConsumers(10);
factory.setMaxConcurrentConsumers(10);
factory.setMessageConverter(jsonMessageConverter());
return factory;
}
@Bean
public AmqpAdmin amqpAdmin() {
RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory());
rabbitAdmin.setIgnoreDeclarationExceptions(true); // useless
return rabbitAdmin;
}
监听器配置:
@Service
public class CalculatorServiceV2 {
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = "calc_service_v2.multiply", durable = "false", autoDelete = "true"),
exchange = @Exchange(value = "calc_service_v2", durable = "false", autoDelete = "true"),
key = "multiply"))
public Result multiply(Operands operands) {
// do something..
}
}
【问题讨论】:
标签: java rabbitmq spring-amqp