私は Spring Integration を初めて使用し、データのストリームを返す方法を見つけようとしていますが、例が見つかりません。ByteStreamWritingMessageHandlerに関するドキュメントを見つけましたが、あいまいなようで、使用例 (Bean 定義以外) を提供していません。私がする必要があるのは、ByteStreamWritingMessageHandler を使用するチャネルを定義し、それを受信ゲートウェイで (応答チャネルを介して) 参照することだと思いますが、いくつか質問があります。
まず、私は正しいですか?デフォルトのチャネル タイプを使用できますか? チャネル アダプタは必要ですか? サービス メソッドから ByteArrayOutputStream を返すことはできますか? チャネル定義はどのようになりますか?
どんな助けでも大歓迎です。
- - - - - - - -アップデート - - - - - -
現在のエンドポイントは次のように構成されています。
<int:channel id="httpReplyChannel"/>
<int:channel id="exampleService.exampleMethod"/>
<int-http:inbound-gateway path="/example"
supported-methods="POST"
request-channel="exampleService.exampleMethod"
request-payload-type="java.lang.Integer"
reply-channel="httpReplyChannel"
message-converters="jsonMessageConverter"
mapped-request-headers="*"/>
<int:service-activator input-channel="exampleService.exampleMethod"
ref="exampleService"
method="exampleMethod"/>
そのため、インバウンド用とアウトバウンド用の 2 つのチャネルを使用し、http:inbound-gateway の reply-channel 属性を使用してアウトバウンド チャネルを構成します。同じパターンに従いたいのですが、新しいアウトバウンド チャネルを作成します。私の問題は、ストリームを返すのに最適なチャネルの種類がわからないことです。エンドポイントは、画像を含むストリームをブラウザーに直接返します (ブラウザーは HTML img タグを介して要求を行います)。そのため、ストリーム (ByteArrayOutputStream) を返すために exampleMethod が必要であり、返される画像の種類に基づいて動的に設定されたヘッダーにアクセスする必要があります。