0

私は例外を下回っています

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 を削除しようとしましたが、それでも同じ例外が発生しますか?

4

1 に答える 1