Java RabbitMQ异常:操作队列.declare导致在服务器端找不到通道异常
我定义了两个队列“request.queue”和“result.queue”,我的web UI在“request.queue”中生成消息,然后我的python应用程序从“request.queue”中使用消息并开始处理,然后将结果推送到“result.queue”中,最后从“result.queue”中生成结果,并向用户显示。它在我的带有ubuntu 20.4的labtop中运行得很好,但当我将所有代码放入带有ubuntu 20.4操作系统的服务器时,它不工作,只创建“request.queue”,然后抛出一个异常:(“operation queue.declare导致未找到通道异常:no queue'result.queue'in vhost'/”) 和另一个日志: SimpleMessageListenerContainer:代理不可用;无法在启动期间强制队列声明:java.net.ConnectException:拒绝连接(拒绝连接) 使用者引发的异常,如果连接工厂支持,则可以重新启动处理。异常摘要:org.springframework.amqp.AmqpConnectException:java.net.ConnectException:connection-densed(connection-densed) 原因:com.rabbitmq.client.ShutdownSignalException:通道错误;协议方法:#方法(回复代码=404,回复文本=NOT_FOUND-vhost'/'中没有队列'result.queue',类id=50,方法id=10) serve中的RabbitMq版本为3.8.8,Erlang版本为23.0.3 任何人都可以帮助我为什么服务器上的代码会引发异常 我的用于声明队列的spring boot java代码如下:Java RabbitMQ异常:操作队列.declare导致在服务器端找不到通道异常,java,spring-boot,rabbitmq,amqp,Java,Spring Boot,Rabbitmq,Amqp,我定义了两个队列“request.queue”和“result.queue”,我的web UI在“request.queue”中生成消息,然后我的python应用程序从“request.queue”中使用消息并开始处理,然后将结果推送到“result.queue”中,最后从“result.queue”中生成结果,并向用户显示。它在我的带有ubuntu 20.4的labtop中运行得很好,但当我将所有代码放入带有ubuntu 20.4操作系统的服务器时,它不工作,只创建“request.queue
@Configuration
public class RequestConfiguration extends RabbitMqConfiguration {
@Value("${spring.rabbitmq.queue}")
String queueName;
@Value("${spring.rabbitmq.exchange}")
String exchange;
@Value("${spring.rabbitmq.routingkey}")
String routingkey;
@Bean
Queue queue() {
return new Queue(queueName, true);
}
@Bean
DirectExchange exchange() {
return new DirectExchange(exchange);
}
@Bean
Binding binding(Queue queue, DirectExchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with(routingkey);
}
@Bean
public MessageConverter jsonMessageConverter() {
return new Jackson2JsonMessageConverter();
}
@Bean
public AmqpTemplate rabbitTemplate() {
final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory());
rabbitTemplate.setMessageConverter(jsonMessageConverter());
return rabbitTemplate;
}
}
#And for consumer:
@Configuration
public class ResultConsumerConfiguration extends RabbitMqConfiguration {
@Value("${spring.rabbitmq.resultQueue}")
String resultQueueName;
@Value("${spring.rabbitmq.resultExchange}")
String exchange;
@Value("${spring.rabbitmq.resultRoutingkey}")
String routingkey;
@Bean
Queue queue() {
return new Queue(resultQueueName, true);
}
@Bean
DirectExchange exchange() {
return new DirectExchange(exchange);
}
@Bean
Binding binding(Queue queue, DirectExchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with(routingkey);
}
@Bean
public MessageConverter jsonMessageConverter() {
final Jackson2JsonMessageConverter converter = new Jackson2JsonMessageConverter();
converter.setClassMapper(classMapper());
return converter;
}
@Bean
public DefaultClassMapper classMapper() {
DefaultClassMapper typeMapper = new DefaultClassMapper();
typeMapper.setDefaultType(ResultMessageGeneral.class);
return typeMapper;
}
@Bean
public RabbitTemplate rabbitTemplate() {
RabbitTemplate template = new RabbitTemplate(connectionFactory());
template.setRoutingKey(this.resultQueueName);
template.setMessageConverter(jsonMessageConverter());
return template;
}
@Bean
public SimpleMessageListenerContainer listenerContainer() {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory());
container.setQueueNames(this.resultQueueName);
container.setMessageListener(listenerAdapter());
return container;
}
@Bean
MessageListenerAdapter listenerAdapter() {
return new MessageListenerAdapter(rabbitMqListener, jsonMessageConverter());
}
}