日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

无限循环抛出 No method found for class [B 这个异常

發(fā)布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 无限循环抛出 No method found for class [B 这个异常 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

問題描述

  • 寫入RabbitMQ消息
  • 接收RabbitMQ消息類型 String
@RabbitHandler public void receive(String message) {if (StringUtils.isEmpty(message)) {return;}// 業(yè)務(wù)代碼 }
  • 上面配置導(dǎo)致無限循環(huán)拋出異常如下
[08:57:05.502][DEBUG][o.s.a.r.listener.BlockingQueueConsumer][org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#0-1] Received message: (Body:'[B@d5b8d16(byte[223])' MessageProperties [headers={}, contentLength=0, redelivered=true, receivedExchange=exchange.canal, receivedRoutingKey=canal-routing-key, deliveryTag=450, consumerTag=amq.ctag-x079bMTfxizFn_WM75rJyw, consumerQueue=mes_warning_message]) [08:57:05.502][DEBUG][o.s.a.r.l.a.MessagingMessageListenerAdapter][org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#0-1] Processing [GenericMessage [payload=byte[223], headers={amqp_receivedRoutingKey=canal-routing-key, amqp_receivedExchange=exchange.canal, amqp_deliveryTag=450, amqp_consumerQueue=mes_warning_message, amqp_redelivered=true, id=e14a2efd-12d0-1c7d-2c1b-43b9f6432c28, amqp_consumerTag=amq.ctag-x079bMTfxizFn_WM75rJyw, amqp_lastInBatch=false, timestamp=1639011425502}]] [08:57:05.502][DEBUG][o.s.a.r.listener.BlockingQueueConsumer][pool-2-thread-6] Received cancelOk for tag amq.ctag-x079bMTfxizFn_WM75rJyw (mes_warning_message); Consumer@34114276: tags=[[amq.ctag-x079bMTfxizFn_WM75rJyw]], channel=Cached Rabbit Channel: AMQChannel(amqp://test@127.0.0.1:5672/,1), conn: Proxy@42db3ff Shared Rabbit Connection: SimpleConnection@23dda7a3 [delegate=amqp://test@127.0.0.1:5672/, localPort= 50086], acknowledgeMode=AUTO local queue size=0 [08:57:05.502][DEBUG][o.s.a.r.l.SimpleMessageListenerContainer][org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#0-1] Listener exception after container shutdown org.springframework.amqp.rabbit.support.ListenerExecutionFailedException: Listener threw exceptionat org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.wrapToListenerExecutionFailedExceptionIfNeeded(AbstractMessageListenerContainer.java:1699)at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:1589)at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.actualInvokeListener(AbstractMessageListenerContainer.java:1504)at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:1492)at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:1483)at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:1427)at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:970)at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:916)at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$1600(SimpleMessageListenerContainer.java:83)at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.mainLoop(SimpleMessageListenerContainer.java:1291)at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1197)at java.lang.Thread.run(Thread.java:748) Caused by: org.springframework.amqp.AmqpException: No method found for class [Bat org.springframework.amqp.rabbit.listener.adapter.DelegatingInvocableHandler.getHandlerForPayload(DelegatingInvocableHandler.java:151)at org.springframework.amqp.rabbit.listener.adapter.DelegatingInvocableHandler.getMethodFor(DelegatingInvocableHandler.java:270)at org.springframework.amqp.rabbit.listener.adapter.HandlerAdapter.getMethodFor(HandlerAdapter.java:84)at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.invokeHandlerAndProcessResult(MessagingMessageListenerAdapter.java:146)at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.onMessage(MessagingMessageListenerAdapter.java:133)at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:1585)... 10 common frames omitted

原因

  • 接收消息信息類型錯誤,將String 類型改為 byte[]

解決辦法

  • 新增RabbItConfig配置文件,完成JSON格式的String轉(zhuǎn)成字節(jié)碼
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;@Configuration public class RabbitConfig {@Beanpublic RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {RabbitTemplate template = new RabbitTemplate(connectionFactory);template.setMessageConverter(new Jackson2JsonMessageConverter());return template;}@Beanpublic SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory) {SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();factory.setConnectionFactory(connectionFactory);factory.setMessageConverter(new Jackson2JsonMessageConverter());return factory;} }
  • 用字節(jié)碼數(shù)組接收,并轉(zhuǎn)換為String
@RabbitHandlerpublic void receive(byte[] result) {String message = null;try {message = new String(result, StandardCharsets.UTF_8.name());} catch (UnsupportedEncodingException e) {e.printStackTrace();}if (StringUtils.isEmpty(message)) {return;}}

總結(jié)

以上是生活随笔為你收集整理的无限循环抛出 No method found for class [B 这个异常的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。