복붙노트

[SPRING] RabbitMQ에서 문자열 / json으로 메시지 변환

SPRING

RabbitMQ에서 문자열 / json으로 메시지 변환

나는 현재 공정하고 간단한 문제로 열심히 노력하고 있습니다. RabbitMQ에서 메시지를 받고 문자열 (또는 나중에 json 객체)로 변환해야합니다. 하지만 얻을 수있는 것은 바이트뿐입니다.

Message 객체는 그 자체로 문자열을 표시합니다.

(Body:'{"cityId":644}'; ID:null; Content:application/json; Headers:{}; Exchange:; RoutingKey:pages.type.index; Reply:null; DeliveryMode:NON_PERSISTENT; DeliveryTag:1)

구성 클래스 (스프링 사용)

@Configuration
public class RabbitConfiguration {

    @Bean
    public CachingConnectionFactory connectionFactory() {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory("www.example.com");
        connectionFactory.setUsername("xxxx");
        connectionFactory.setPassword("xxxx");
        return connectionFactory;
    }

    @Bean
    public MessageConverter jsonMessageConverter(){
        JsonMessageConverter jsonMessageConverter = new JsonMessageConverter();
        return jsonMessageConverter;
    }

    @Bean
    public SimpleMessageListenerContainer messageListenerContainer(){
        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory());
        container.setAutoStartup(false);
        container.setQueues(indexQueue());
        container.setConcurrentConsumers(1);
        container.setAcknowledgeMode(AcknowledgeMode.AUTO);
        container.setMessageListener(new MessageListenerAdapter(pageListener(), jsonMessageConverter()));
        return container;
    }

    @Bean
    public Queue indexQueue(){
        return new Queue("pages.type.index");
    }

    @Bean
    public MessageListener pageListener(){
        return new PageQueueListener();
    }

}

및 메시지 수신기

public class PageQueueListener implements MessageListener {

    public void onMessage(Message message) {
        System.out.println(message);
        System.out.println(message.getBody());
    }
 }

내 문제는 getBody () 메소드가 [B @ 4dbb73b0을 표시하므로 아무 것도 변환되지 않는다는 것입니다. 문자열도 json 객체도 :(

나는 바보 같지만 여기서 해결책을 찾지 못한다.

해결법

  1. ==============================

    1.message.getBody ()는 바이트 []를 반환합니다.

    message.getBody ()는 바이트 []를 반환합니다.

    시험:

    byte[] body = message.getBody();
    System.out.println(new String(body));
    
  2. from https://stackoverflow.com/questions/12748284/converting-message-from-rabbitmq-into-string-json by cc-by-sa and MIT license