当前位置: 首页 > 面试题库 >

将Message从RabbitMQ转换为string / json

江超英
2023-03-14
问题内容

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

消息 对象显示本身作为一个字符串,方式

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


 类似资料:
  • 问题内容: 我正在开发一些应用程序,它允许从SD卡中选择图像,将其保存到数据库中并为ImageView设置此值。我需要知道将uri转换为字符串并将字符串转换为uri的方法。现在,我使用了Uri的getEncodedPath()方法,但是例如,此代码不起作用: 因此,我不知道如何将Uri保存到数据库中并根据保存的值创建新的Uri。请帮我修复它。 问题答案: 我需要知道将uri转换为字符串并将字符串转

  • 问题内容: 如何从float转换为string或从string转换为float? 在我的情况下,我需要在2个值字符串(我从表中获得的值)和我计算出的浮点值之间进行断言。 我尝试从浮动到字符串: 但是断言失败 问题答案: 使用Java的类。 为了进行比较,将字符串转换为float并比较两个float总是更好。这是因为对于一个浮点数,存在多个字符串表示形式,与字符串相比,它们是不同的(例如“ 25”!

  • 我有一个HashMap和一个包含键/值的属性文件。属性文件以这种格式存储键/值“4,5=2”我构建了一个从文件加载属性的方法,它将这对“键/值”放入一个HashMap数组(字符串、整数)中。但我的问题是,我希望键的每个元素都存储为int形式,以便将它们用作另一个方法的参数。键存储为字符串。如有任何帮助,我们将不胜感激。谢谢你!

  • 到目前为止,我在这里找到了一些答案,但每次都会出现无法从对象转换为字符串的错误,等等。例如,我现在使用了这个想法: 我有以下与我的数据库映射的对象列表:

  • 问题内容: 我正在使用Jongo与Mongo一起工作,当我执行查询时会收到结果。 问题是,如果json是content ,它将不是from的唯一方法。 我如何获得原件? 我没有要映射的地图,也不是创建类的解决方案,这就是为什么我使用 问题答案: 如果您可以访问某些JSON库,那似乎就是这样。 如果使用org.json库,请使用: 如果是Gson,请使用@hellboy提到的方法:

  • 问题内容: 我只想编写这样的代码: 我以为可以代表任何类型,所以也可以代表任何类型,现在我知道我错了,是一个整体类型,不能视为。 因此,有人可以帮助我如何使此代码正常工作,或其他解决方案吗? PS :我知道或可以相互转换,但是实际上这并不是我的意图,可能还有另一种类型,而不是and 。 问题答案: 现在我知道我错了,是一个整体类型,不能视为。 是的,那是因为它是它自己的类型(而不是其他任何类型的“