2017-02-13 6 views
1

TCPゲートウェイ上に構築されたMy Spring Integrationアプリケーションがうまくいきます。要求メッセージをTCPゲートウェイに送信し、応答を準備するためにメッセージをserviceActivatorに転送し、応答がクライアントに送信されます。TCPゲートウェイで応答を送信した後、Spring統合のserviceActivatorにメッセージを送信

クライアントに送信した後、メッセージをデータベースに保存します。私は、クライアントに応答を送信した後で、別のserviceActivatorにメッセージを転送できるかどうかは不思議です。

「はい」の場合、スプリング設定をどのように設定する必要がありますか? この点について私は助けていただければ幸いです。ここで

は春のコンテキストファイルです:

<beans> 
    <int-ip:tcp-connection-factory id="crLfServer" 
      type="server" 
      port="${availableServerSocket}" 
      single-use="true" 
      so-timeout="10000" 
      using-nio="false" 
      serializer="connectionSerializeDeserialize" 
      deserializer="connectionSerializeDeserialize" 
      /> 

     <bean id="connectionSerializeDeserialize" class="org.springframework.integration.ip.tcp.serializer.ByteArrayStxEtxSerializer"/> 

     <int-ip:tcp-inbound-gateway id="gatewayCrLf" 
      connection-factory="crLfServer" 
      request-channel="serverBytes2StringChannel" 
      error-channel="errorChannel" 
      reply-timeout="10000"/> <!-- reply-timeout works on inbound-gateway --> 

     <int:channel id="toSA" /> 

     <int:service-activator input-channel="toSA" 
      ref="myService" 
      method="prepare"/> 

     <int:object-to-string-transformer id="serverBytes2String" 
      input-channel="serverBytes2StringChannel" 
      output-channel="toSA"/> 

     <int:transformer id="errorHandler" 
      input-channel="errorChannel" 
      expression="payload.failedMessage.payload + ':' + payload.cause.message"/> 
</beans> 

あなたはその<service-activator>ためoutput-channelとして<publish-subscribe-channel>追加することができますあなたの

答えて

1

ありがとうございます。 1つの加入者は<int-jdbc:outbound-channel-adapter>で、DBへの応答を格納します。別の加入者は、<int-ip:tcp-inbound-gateway>への返信と仮定するとoutput-channelのない<bridge>である必要があります。あなたがsuper.serialize()を実行した後にSerializerを拡張し、すでにbyte[]で所望の論理を実行することができ、その目的のために

しかし、ええ、それは前にクライアントに送信している...

+1

jdbcアダプタの 'order =" 1 "'(受信ゲートウェイの 'reply-channel'である' output-channel'と一緒に)ブリッジに 'order =" 1 "'を入れ、返信が最初に送信されます。 –

関連する問題