java - 将来自 RabbitMQ 的消息转换为字符串/json

标签 java json spring rabbitmq amqp

我目前正在努力解决一个相当简单的问题。我想从 RabbitMQ 接收消息并将其转换为字符串(或稍后转换为 json 对象)。但我得到的只是字节数。

Message 对象以这种方式将自身显示为字符串

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

配置类(使用spring)

@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 对象:(

我觉得自己很蠢,但我找不到解决办法

最佳答案

message.getBody() 返回一个 byte[]

尝试:

byte[] body = message.getBody();
System.out.println(new String(body));

关于java - 将来自 RabbitMQ 的消息转换为字符串/json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12748284/

相关文章:

java - 使用 Thymeleaf 的表单不适用于 POJO

java - 为什么这个文件没有被删除?

javascript - 将 JSON 日期发送到 PHP 后端,时区丢失

java - OrientDB ETL导入: 'skip' operator throws exception

javascript - 如何执行更新 json 源的函数

javascript - 在代码隐藏的 .cs 文件中访问 javascript 变量的值?

java - 如何在 spring Controller 中使用 enum 作为参数,使用 "spring"语言扩展 swagger-codegen 生成的接口(interface)

java - Spring Security Java Config 自定义注销处理程序不工作

java - Android Java 静态泛型调用

JavaFX 和套接字 = 不在 FX 应用程序线程上