RocketMQ faultRocketMQListenerContainer.java:478) [ ]: convert failed. str:{}

问题:在RocketMQ消费消息时,抛出如下问题:


2022-05-22 20:28:58.551  INFO 1 --- [NettyClientPublicExecutor_1] [spread-business] [                    ] faultRocketMQListenerContainer.java:478) [                    ]: convert failed. str:{"orderId":1527590897781911552,"payChannel":2,"payState":1,"payTime":"2022-05-20T18:03:46.265","print":true,"state":100,"updateTime":"2022-05-20T18:03:46.265"}, msgType:class com.sssk.cloud.trade.dto.PaySuccessUpdateInfoDTO

2022-05-22 20:28:58.552  WARN 1 --- [NettyClientPublicExecutor_1] [spread-business] [                    ] faultRocketMQListenerContainer.java:358) [                    ]: consume message failed. messageExt:MessageExt [brokerName=null, queueId=2, storeSize=457, queueOffset=5, sysFlag=0, bornTimestamp=1653041026266, bornHost=/47.99.143.47:21644, storeTimestamp=1653041026281, storeHost=/10.100.13.166:10911, msgId=0A640DA600002A9F000000229F7CFB3A, commitLogOffset=148704656186, bodyCRC=1456887710, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='SAAS_SCAN_ORDER', flag=0, properties={TRACE_ON=true, MSG_REGION=cn-qingdao-publictest, UNIQ_KEY=C0A80FD000014E0E2F2A65B90CDA000C, TAGS=scan_pay_callback, INSTANCE_ID=MQ_INST_1748806876840792_BXkoYOPa}, body=[123, 34, 111, 114, 100, 101, 114, 73, 100, 34, 58, 49, 53, 50, 55, 53, 57, 48, 56, 57, 55, 55, 56, 49, 57, 49, 49, 53, 53, 50, 44, 34, 112, 97, 121, 67, 104, 97, 110, 110, 101, 108, 34, 58, 50, 44, 34, 112, 97, 121, 83, 116, 97, 116, 101, 34, 58, 49, 44, 34, 112, 97, 121, 84, 105, 109, 101, 34, 5

debug时,发现在调用转换器(MappingJackson2MessageConverter)时报错,JackJson不支持java8的时间类型

 错误如下:

Could not read JSON: Cannot construct instance of `java.time.LocalDateTime` (no Creators, like default constructor, exist): no String-argument constructor/factory method to deserialize from String value ('2022-05-20T17:41:38.955')
 at [Source: (String)"{"orderId":1527585238016139264,"payChannel":2,"payState":1,"payTime":"2022-05-20T17:41:38.955","print":true,"state":100,"updateTime":"2022-05-20T17:41:38.955"}"; line: 1, column: 70] (through reference chain: com.sssk.cloud.trade.dto.PaySuccessUpdateInfoDTO["payTime"])

解决方法:

1.改为JSON字符串发送,由消费者自行转换处理

2.更新jar

        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.0.3</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

当前版本未将JackJson的转换加入其中:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.time.LocalDateTime'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@org.springframework.web.bind.annotation.RequestParam java.time.LocalDateTime] for value [2023-00-00T00:00:00]; nested exception is java.lang.IllegalArgumentException: Parse attempt failed for value [2023-00-00T00:00:00] at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:133) at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122) at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
05-26

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值