问题描述
我定义了两个队列“ request.queue”和“ result.queue”,我的Web UI在“ request.queue”中生成消息,然后我的python应用程序从“ request.queue”中使用它并开始处理,然后将结果推送到“ result.queue”中,最后从“ result.queue”显示给this link这样的用户。它在使用ubuntu 20.4的labtop中可以很好地工作,但是当我将所有代码使用ubuntu 20.4 os放入服务器时,它无法正常工作,仅创建'request.queue',然后引发异常:(“ operation queue.declare通道异常not_found:虚拟主机'/'中没有队列'result.queue' 和另一个日志: SimpleMessageListenerContainer:代理不可用;无法在启动期间强制执行队列声明:java.net.ConnectException:连接被拒绝(连接被拒绝)
消费者引发异常,如果连接工厂支持,则处理可以重新启动。异常摘要:org.springframework.amqp.AmqpConnectException:java.net.ConnectException:连接被拒绝(连接被拒绝)
由以下原因引起:com.rabbitmq.client.ShutdownSignalException:通道错误;协议方法:#method 该服务中的RabbitMq版本为3.8.8,而Erlang版本为23.0.3。 任何人都可以帮助我,为什么我在服务器上的代码会引发异常? 我的带有用于声明队列的Spring Boot的Java代码在这里:@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());
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)