代码之家  ›  专栏  ›  技术社区  ›  skyman

Spring AMQP接收器的参数类型错误

  •  0
  • skyman  · 技术社区  · 6 年前

    我的Spring AMQP应用程序在启动时记录了以下异常:

    org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Failed to invoke target method 'receiveMessage' with argument type = [class [B], value = [{[B@660cff44}]
    

    以下是相关代码段:

    @Bean
    public MessageConverter jsonMessageConverter(){
        return new Jackson2JsonMessageConverter();
    }
    
    @Bean
    Queue queue() {
        return new Queue(config.getAMQPResultsQueue(), false);
    }
    
    @Bean
    TopicExchange exchange() {
        return new TopicExchange(config.getAMQPResultsExchange());
    }
    
    @Bean
    Binding binding(Queue queue, TopicExchange exchange) {
        return BindingBuilder.bind(queue).to(exchange).with("#");
    }
    
    @Bean
    SimpleMessageListenerContainer container(ConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) {
        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        container.setQueueNames(config.getAMQPResultsQueue());
        container.setMessageListener(listenerAdapter);
        container.setMessageConverter(jsonMessageConverter());
        return container;
    }
    
    @Bean
    MessageListenerAdapter listenerAdapter(Receiver receiver) {
        return new MessageListenerAdapter(receiver, "receiveMessage");
    }
    

    @Component
    public class Receiver {
        public void receiveMessage(String message) {
            System.out.println("Received <" + message + ">");
        }
    }
    

    1 回复  |  直到 6 年前
        1
  •  8
  •   Gary Russell    6 年前

    这个 Jackson2JsonMessageConverter content_type 包含 json .

    byte[] .

    Byte[] . 设置标题或使用 .