[SPRING] 토끼 메시지 수신기 실행에 실패했으며 ErrorHandler가 설정되지 않았습니다. 인수가 type = [class [B] 인 대상 메소드를 호출하지 못했습니다.
SPRING토끼 메시지 수신기 실행에 실패했으며 ErrorHandler가 설정되지 않았습니다. 인수가 type = [class [B] 인 대상 메소드를 호출하지 못했습니다.
나는 봄 amqp rabbitmq를 사용하고 있으며 다음을 사용하여 메시지를 보낸다.
Message message = MessageBuilder
.withBody(item.toString().getBytes())
.setReplyTo("importReply")
.setCorrelationId(item.toString().getBytes()).build();
내 메시지 처리기는 다음과 같습니다.
public class Foundation {
public Message importExchange(Message exchange) {
System.out.println("Command:" + exchange.getBody());
Message message = MessageBuilder
.withBody(exchange.getBody().toString().getBytes()).setCorrelationId(exchange.getMessageProperties().getCorrelationId() .toString().getBytes()).build();
return message;
}
}
나는 그것을 사용하여 구부렸다.
<rabbit:listener-container
connection-factory="rabbitConnectionFactory" concurrency="10">
<rabbit:listener queues="${rabbitmq.import.queue}"
ref="foundation" method="importExchange" />
<rabbit:listener queues="${rabbitmq.import.reply.queue}"
ref="importExchangeItemWriter" method="replyHandler" />
</rabbit:listener-container>
그러나 나는 예외 아래에있다.
Execution of Rabbit message listener failed, and no ErrorHandler has been set.
org.springframework.amqp.rabbit.listener.ListenerExecutionFailedException: Failed to invoke target method 'importExchange' with argument type = [class [B], value = [{[B@427829d8}]
at org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter.invokeListenerMethod(MessageListenerAdapter.java:483)
at org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter.onMessage(MessageListenerAdapter.java:374)
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:647)
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:573)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$001(SimpleMessageListenerContainer.java:75)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$1.invokeListener(SimpleMessageListenerContainer.java:154)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.invokeListener(SimpleMessageListenerContainer.java:1111)
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:556)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:904)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:888)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$500(SimpleMessageListenerContainer.java:75)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:989)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.NoSuchMethodException: com.stockopedia.symfony.Foundation.importExchange([B)
at java.lang.Class.getMethod(Class.java:1665)
at org.springframework.util.MethodInvoker.prepare(MethodInvoker.java:178)
at org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter.invokeListenerMethod(MessageListenerAdapter.java:466)
... 12 more
비슷한 문제는 제작자 측의 replyHandler에서도 발생합니다.
public void replyHandler(Message message) {
System.out.println("In Reply Handler:" + message.getMessageProperties().getCorrelationId());
}
또한 importExchange에 예외가있는 경우 replyHandler에서 예외를 어떻게 얻을 수 있습니까?
해결법
-
==============================
1.메시지를 듣기 위해 POJO를 사용하기 때문에 메시지를 처리 할 수 없습니다.
메시지를 듣기 위해 POJO를 사용하기 때문에 메시지를 처리 할 수 없습니다.
Foundation # importExchange는 메일 본문 (귀하의 경우 byte [])을 수락해야합니다. 회신 메시지 본문에 적합한 내용을 반환하십시오.
replyHandler는 MessageListener를 구현하면된다.
프레임 워크는 당신에게 상관 관계를 제공 할 것입니다.
-
==============================
2.또는 .setContentType = "text / plain"을 추가하면 변환기가 String으로 변환 할 수 있습니다.
또는 .setContentType = "text / plain"을 추가하면 변환기가 String으로 변환 할 수 있습니다.
from https://stackoverflow.com/questions/23240863/execution-of-rabbit-message-listener-failed-and-no-errorhandler-has-been-set-f by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring은 오류를 throw합니다. Bean 정의가 추상입니다. (0) | 2019.05.12 |
---|---|
[SPRING] 다중 Spring PropertyPlaceholderConfigurer 동시에 (0) | 2019.05.12 |
[SPRING] 자바에서 메서드를 인터셉트하는 방법 (0) | 2019.05.12 |
[SPRING] weblogic.xml의 오류 : cvc-complex-type.2.4.a : 'prefer-application-packages'요소로 시작하는 잘못된 내용이 발견되었습니다. (0) | 2019.05.12 |
[SPRING] Springockito하는 방법? (0) | 2019.05.12 |