Исходящий шлюз не потребляет ответ - PullRequest
0 голосов
/ 03 июня 2019

Есть две службы, взаимодействующие друг с другом через JMS. S1 вызывает S2 через исходящий шлюз. Запрос отправляется на S2, который использует Сообщение (управляемый сообщениями-канал-адаптер) и создает новое сообщение GenericMessage с данными ответа. Этот ответ отправляется обратно (адаптер исходящего канала) на S1, но он не используется.

Когда я позволю S2 вернуть исходное сообщение JMS запроса, оно будет использовано S1 в качестве ответа. Создание нового (даже с копированием данных заголовка JMS) это не так. Что я делаю не так?

S1:

<int:gateway service-interface="de.embunit.booky.webgateway.integration.ServiceGateway"
             id ="jmsServiceGateway" default-reply-timeout="3000" default-request-timeout="3000">
    <int:method name="placeOrder"
                    request-channel="cnlGatewayPlaceOrderRequest"
                    reply-channel="cnlGatewayPlaceOrderResponse" />
</int:gateway>

<int:chain input-channel="cnlGatewayPlaceOrderRequest" output-channel="cnlGatewayPlaceOrderResponse">
    <int:object-to-json-transformer content-type="application/json" />
    <jms:outbound-gateway request-destination="GATEWAY_PLACE_ORDER_REQUEST" request-pub-sub-domain="true" correlation-key="JMSCorrelationID"
                          reply-destination="GATEWAY_PLACE_ORDER_RESPONSE" reply-pub-sub-domain="true"
                          receive-timeout="3000" connection-factory="jmsConnectionFactory"/>
    <int:transformer id="idReplyTransformer" ref="replyTransformer" method="convert"/>
</int:chain>

S2:

<jms:message-driven-channel-adapter id="jmsGatewayPlaceOrderRequest"
                                    destination="GATEWAY_PLACE_ORDER_REQUEST" channel="cnlGatewayPlaceOrderRequestCustGranted"
                                    acknowledge="auto" pub-sub-domain="true"
                                    connection-factory="jmsConnectionFactory"/>

<jms:outbound-channel-adapter id="jmsGatewayPlaceOrderResponse"  pub-sub-domain="true"
                              destination="GATEWAY_PLACE_ORDER_RESPONSE" channel="cnlGatewayPlaceOrderResponse"
                              connection-factory="jmsConnectionFactory"  />

<bean id="orderWorkflowProcessor" class="de.embunit.booky.warehouseservice.integration.WorkflowProcessor">
    <property name="jsonObjectMapper" ref="jackson2JsonObjectMapper"/>
    <property name="workflowEngineBuilder" ref="orderWorkflowEngineBuilder" />
</bean>

<!--Service-->
<int:chain input-channel="cnlGatewayPlaceOrderRequestCustGranted" output-channel="cnlGatewayPlaceOrderResponse">
    <int:service-activator id="orderWorkflowProcessor" ref="orderWorkflowProcessor" method="process" />
</int:chain>

Должно быть возможно создать новое Сообщение, содержащее данные ответа другого типа.

...