2016-10-21 5 views
4

バネクラウドのスルースとスプリングブートのamqp(rabbit)パブリッシャーとサブスクライバの統合を示す例を探してください。スプリングクラウドスリーとスプリングブートの統合amqp

私は

2016年10月21日08ログに次のメッセージを参照しています:35:15.708 INFO [プロデューサー、9148f56490e5742f、943ed050691842ab、偽] 30928 --- [NIO-8080-EXEC-1] abccontrollers.MessagingController:アクティビティOrderShippedを使用して呼び出すリクエストを受け取りました 2016-10-21 08:35:15.730 INFO [プロデューサ、9148f56490e5742f、943ed050691842ab、false] 30928 --- [nio-8080-exec-1] abcservice.ProducerService :メッセージ公開

私はQueueのメッセージを見ると、traceIdやその他の詳細がヘッダーに追加されていません。 MessagePostProcessorを使用してヘッダーに追加する必要がありますか?

また、受信サービスで何を行う必要がありますか?

答えて

1

私たちは、Spring AMQPをそのままの状態で測定しません。ただし、サポートしているSpring IntegrationまたはSpring Cloud Streamを使用することができます。何らかの理由でSpring AMQPを使用する必要がある場合は、自分でコードをインストルメントする必要があります(また、私たちにPRを送信します))。

+0

こんにちはMarcin - ありがとうございます。私はコードを書いても構いません。どのように統合するかに関するいくつかのサンプルがありますか? – basu76

+0

私たちはSpanInjectorとSpanExtractorという概念を持っています。あなたはメッセージングで使用されるものを見ることができます - https://github.com/spring-cloud/spring-cloud-sleuth/blob/master/spring-cloud-sleuth-core/src/main/java/org/springframework /cloud/sleuth/instrument/messaging/MessagingSpanInjector.javaおよびhttps://github.com/spring-cloud/spring-cloud-sleuth/blob/master/spring-cloud-sleuth-core/src/main/java/org /springframework/cloud/sleuth/instrument/messaging/MessagingSpanExtractor.java。彼らは、捕捉して追跡情報をメッセージに渡すことを世話します。 –

+0

Marcin - SpanInjectorの独自のバージョンを実装している場合、注入メソッドがどのように呼び出されますか? – basu76

1

Spring AMQPを使用すると、setBeforePublishPostProcessorsメソッドを使用してRabbitTemplateMessagePostProcessorを設定できます。

私たちは、この方法をorg.springframework.amqp.core.MessagePostProcessorを実装しpostProcessMessageメソッドをオーバーライド:

@Override 
public org.springframework.amqp.core.Message postProcessMessage(org.springframework.amqp.core.Message message) 
     throws AmqpException { 
    MessagingMessageConverter converter = new MessagingMessageConverter(); 
    MessageBuilder<?> mb = MessageBuilder.fromMessage((Message<?>) converter.fromMessage(message)); 
    inject(tracer.getCurrentSpan(), mb); 
    return converter.toMessage(mb.build(), message.getMessageProperties()); 
} 

inject方法についてのメッセージに必要なすべてのヘッダーを設定することができ、それが変化してRabbitMQのに渡されます。
あなたはとても私の例は、このバージョンに基づいており、次のリリース(1.2)で、それが簡単になります私たちは、v1.1.1 of spring-cloud-sleuth-streamを使用しているorg.springframework.cloud.sleuth.instrument.messaging.MessagingSpanInjector

に、このようなinjectメソッドを実装する方法の良い例があります。

+0

似たようなことをしました。 – basu76

+0

@ yuval-simhon - PRからSleuthへのケア? :) –

関連する問題