Есть две службы, взаимодействующие друг с другом через 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>
Должно быть возможно создать новое Сообщение, содержащее данные ответа другого типа.