2017-02-22 10 views
1

spring-cloud-stream spring-boot appにメッセージを取得する際に問題があります。 私はメッセージエンジンとしてrabbitMqを使用しています。 メッセージプロデューサは、Spring RestTemplateを使用してメッセージを送信する、非スプリングブートアプリケーションです。Springクラウドストリームは、Spring RestTemplateを使用してRabbitMqに投稿されたメッセージを解析できません。

キュー名:コンシューマアプリケーションがそのキューを聞くために、セットアップで「audit.logging.rest」

。このアプリはspring-boot app(spring-cloud-stream)です。以下

コンシューマーコード

application.yml

cloud: 
    stream: 
     bindings: 
     restChannel: 
      binder: rabbit 
      destination: audit.logging 
      group: rest 

AuditServiceApplication.java

@SpringBootApplication 
public class AuditServiceApplication { 
@Bean 
    public ByteArrayMessageConverter byteArrayMessageConverter() { 
     return new ByteArrayMessageConverter(); 
    } 
    @Input 
    @StreamListener(AuditChannelProperties.REST_CHANNEL) 
    public void receive(AuditTestLogger logger) { 
    ... 
    } 

AuditTestLogger.java

あります

以下は、JSON形式でプロデューサーアプリケーションから送信されるリクエストです。

{"applicationName" : "AppOne" } 

問題の発見カップル: Issue1:春 - クラウドストリームが解析できないよう 私が気づいたことは、以下の方法では、メソッドのパラメータは、Objectとして言及されている場合にのみトリガーなっていますメッセージをJava POJOオブジェクトに挿入します。

@Input 
     @StreamListener(AuditChannelProperties.REST_CHANNEL) 
     public void receive(AuditTestLogger logger) { 

Issue2:私は、オブジェクトを受信する方法を変更し

。オブジェクトは、解析できないRMQTextMessage型であることがわかります。しかし、私はテキストのプロパティに対して実際に投稿されたメッセージを表示します。

私はByteArrayMessageConverterを書いていましたが、これは助けにもならなかったものです。

春のクラウドストリームにMessageConverterを使用してRMQTextMessageからメッセージを抽出し、実際のメッセージを取得する方法はありますか?

事前のおかげで..

答えて

0

RMQTextMessage?それはrabbitmq-jms-clientの一部のように見えます。

RabbitMQバインダーの場合は、Spring AMQPのみに依存する必要があります。

ここで、プロデューサアプリケーションが何をしているのかを見てみましょう。

あなたは、送信者が実際に製造するためrabbitmq-jms-clientを使用するため、キューの中の本当のAMQPメッセージを持っていることを私に言う@StreamListener法の値としてRMQTextMessageを取得しているため、実際の​​のラッパーとしてRMQTextMessageいます。

なぜSpring AMQPも使用しないのですか?

+0

プロデューサーアプリケーションには、rabbitMqクライアントの既存の統合があります。私は、私の新しいプロジェクトの春の雲を使いたいと思っていました。しかし、私はAMQPの使用を試みます。ありがとう – chmk

+0

プロデューサーアプリケーションでRabbitTemplateを使用した後で動作しました。 Artemに感謝します。 – chmk

+0

素晴らしい!だから答えを受け入れる時間:http://stackoverflow.com/help/someone-answers –

関連する問題