私は例外を下回っています
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
こんな感じでメッセージを送っています
MessageProperties props = MessagePropertiesBuilder.newInstance()
.setContentType(MessageProperties.CONTENT_TYPE_TEXT_PLAIN)
.setReplyTo(this.replyQueue)
.setCorrelationId(itemStr.getBytes())
.setHeader("replyTimeout", this.replyTimeout).build();
Message message = MessageBuilder
.withBody(item.toString().getBytes()).andProperties(props)
.build();
これは私のリスナーコンテナ構成です
<rabbit:listener-container
connection-factory="rabbitConnectionFactory" concurrency="${import.exchanges.listener.concurrency}"
requeue-rejected="false" prefetch="1" >
<rabbit:listener queues="${import.exchanges.shares.queue}"
ref="foundation" method="importExchange" />
</rabbit:listener-container>
これは私のポジョです。
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;
}
}
リスナーとして使用したい同じpojoにそのようなメソッドがたくさんあるので、インターフェイスを実装したくありません。
MessageListenerAdapter 実装コード、https://github.com/spring-projects/spring-amqp/blob/master/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/MessageListenerAdapterを見てきました.javaとドキュメント http://docs.spring.io/spring-amqp/docs/1.2.1.RELEASE/api/org/springframework/amqp/rabbit/listener/adapter/MessageListenerAdapter.html
ここで、 Message 引数を受け入れるこの例を示します
public interface RawMessageDelegate {
void handleMessage(Message message);
}
私のpojoは似ていますが、なぜこの例外が発生するのですか? setContentType を削除しようとしましたが、それでも同じ例外が発生しますか?