Rabbit消费者报错:Caused by: com.fasterxml.jackson.core.JsonParseException: Unrecognized token ‘xxx‘: was

消费者控制台报错


Caused by: com.fasterxml.jackson.core.JsonParseException: Unrecognized token '张三2': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"张三2"; line: 1, column: 4]
	at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1851) ~[jackson-core-2.11.4.jar:2.11.4]
	at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:717) ~[jackson-core-2.11.4.jar:2.11.4]
	at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._reportInvalidToken(ReaderBasedJsonParser.java:2898) ~[jackson-core-2.11.4.jar:2.11.4]
	at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._handleOddValue(ReaderBasedJsonParser.java:1944) ~[jackson-core-2.11.4.jar:2.11.4]
	at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken(ReaderBasedJsonParser.java:776) ~[jackson-core-2.11.4.jar:2.11.4]
	at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4664) ~[jackson-databind-2.11.4.jar:2.11.4]
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4513) ~[jackson-databind-2.11.4.jar:2.11.4]
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3468) ~[jackson-databind-2.11.4.jar:2.11.4]
	at org.springframework.amqp.support.converter.AbstractJackson2MessageConverter.convertBytesToObject(AbstractJackson2MessageConverter.java:345) ~[spring-amqp-2.2.15.RELEASE.jar:2.2.15.RELEASE]
	at org.springframework.amqp.support.converter.AbstractJackson2MessageConverter.doFromMessage(AbstractJackson2MessageConverter.java:310) ~[spring-amqp-2.2.15.RELEASE.jar:2.2.15.RELEASE]
	... 18 common frames omitted
	

提供者代码(修改前)

@Test
    public void testSendObjectExchange2(){

        String exchangeName = "root.topic";
        MessageProperties messageProperties = new MessageProperties();
        messageProperties.setExpiration("10000");
        Message message1 = new Message("张三2".getBytes(), messageProperties);
        rabbitTemplate.convertAndSend( "object.queue1", message1);
    }
  1. 引入的依赖
	<dependencies>
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
            <version>2.9.10</version>
        </dependency>
    </dependencies>
  1. RabbitMq接收到的参数
    在这里插入图片描述
  2. 消费者代码
	@RabbitListener(queues = "object.queue1")
    public void fanoutQueueObject2(String msg) throws InterruptedException {
    
        System.err.println("消费者接收到object.queue1的消息为msg= [ " + msg + " ] ");

    }

错误原因

jackson 类型转换失败,jackson 有严格的转换规范,发送者发送到queue的信息格式不对,String类型数据要加上双引号

修改后的提供者代码

@Test
    public void testSendObjectExchange(){

        String exchangeName = "root.topic";
        MessageProperties messageProperties = new MessageProperties();
        messageProperties.setExpiration("10000");
        Message message1 = new Message("\"张三2\"".getBytes(), messageProperties);
        rabbitTemplate.convertAndSend( "object.queue1", message1);
    }

RabbitMq接收到的参数

在这里插入图片描述

消费者成功接收到消息

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值