2016-12-05 3 views
0

RabbitMQ 바인더가있는 Spring Cloud Stream을 사용하고 있습니다. Spring Cloud Stream을 사용하지 않는 외부 서비스를 호출해야합니다. 이 서비스는 typecorrelation_id 메시지 속성을 사용하고 있습니다.보내는 메시지에 AMQP 메시지 속성을 설정할 수 있습니까?

나가는 메시지에서 헤더를 설정하려고했지만 기술적으로 헤더가있는 경우에도 특수한 방법으로 처리됩니다. 따라서 type 헤더를 설정해도 속성이 설정되지 않습니다.

나는 인터셉터에 대해 알고 있으며 Spring RabbitMq 만 사용하면 문제가되지 않습니다. 그러나 Spring Cloud Stream은 높은 수준의 추상화를 나타내므로 모든 바인더 특정 설정이 숨겨져 있습니다.

나가는 스트림 메시지에 RabbitMQ 속성을 설정할 수 있습니까?

답변

1

속성은 AmqpHeaders 상수가 입력 된 메시지 머리글에서 매핑됩니다. 이 경우 AmqpHeaders.TYPE (amqp_type) 및 AmqpHeaders.CORRELATION_ID (amqp_correlationId)입니다.

"알 수없는"메시지 헤더는 모두 토끼 헤더로 매핑됩니다.

+0

그냥 두 번 확인 ... 형식이 제대로 작동하지만 상관 ID가없는 것 같습니다. '.setHeader (AmqpHeaders.CORRELATION_ID, correlationId) '메시지를 작성 중임 – waste

+0

후속 조치 : 상관 ID는 라이브러리 내부에서 사용되므로 사용자가 직접 사용할 수 없습니다. – waste

+0

'RabbitTemplate'을 의미하는 경우 - 프레임 워크가 상관 관계에 대해 다른 헤더를 사용하도록 지시하는 'correlationKey'속성을 참조하십시오. 물론 수신 측에서도이를 알고 있어야합니다. –