Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RabbitMQ异常:操作队列.declare导致在服务器端找不到通道异常_Java_Spring Boot_Rabbitmq_Amqp - Fatal编程技术网

Java RabbitMQ异常:操作队列.declare导致在服务器端找不到通道异常

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

我定义了两个队列“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代码如下:

@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());
        }
 
}