【发布时间】:2016-01-04 12:38:04
【问题描述】:
有时我会在我的日志文件中找到以下条目。我不知道问题是什么。我的猜测是设置较低的请求心跳。还有其他想法吗? 此外,我遇到的情况是,在兔子重新启动后,我的服务器无法在兔子回来后重新建立服务。我必须重新启动服务器,才能重新连接。
[AMQP Connection xxx:5672] [ERROR] org.springframework.amqp.rabbit.connection.CachingConnectionFactory - Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no exchange 'xxxx' in vhost 'aaa', class-id=60, method-id=40)
交换和队列不是自动删除的吗?
公共类 AmqpConfiguration {
@Autowired
private ConnectionFactory connectionFactory;
@Bean
public Queue receiverQueue() {
return new Queue("receiverQueue", true, false, false, getDeadLetterExchangeArgs());
}
@Bean
public FanoutExchange senderExchange() {
return new FanoutExchange("xxxx");
}
@Bean
public Queue deadLetterQueue() {
return new Queue("deadLetterQueue");
}
@Bean
public FanoutExchange exchangeDeadLetter() {
return new FanoutExchange("deadLetter.exchange");
}
@Bean
public Binding bindDeadLetterQueueToExchange() {
return BindingBuilder.bind(deadLetterQueue()).to(exchangeDeadLetter());
}
@Bean
public Binding bindSenderExchangeToQueue() {
return BindingBuilder.bind(receiverQueue()).to(senderExchange());
}
@Bean(name = { "listenerContainerFactory" })
public SimpleRabbitListenerContainerFactory listenerContainerFactory() {
final SimpleRabbitListenerContainerFactory containerFactory = new SimpleRabbitListenerContainerFactory();
containerFactory.setDefaultRequeueRejected(false);
containerFactory.setConnectionFactory(connectionFactory);
// TODO: set heartbeat
return containerFactory;
}
private Map<String, Object> getDeadLetterExchangeArgs() {
final Map<String, Object> args = new HashMap<String, Object>();
args.put("x-dead-letter-exchange", amqpProperties.getDeadLetterExchange());
return args;
}
}
干杯,
丹尼斯
【问题讨论】:
-
您需要显示您的配置 - 交换会自动删除吗?如果是这样,你用什么在broker上声明交易所?
-
感谢您的快速回复,请参阅原始帖子中的 cmets
标签: spring rabbitmq amqp spring-rabbit