完全に理解していない xml 構成の受信アダプターの例を見つけました。設定では、REST リクエスト設定のリクエスト方法、消費される形式などを指定します。
Spring Integration の観点からは、応答は実際にメッセージ チャネルにフィードしているものであるため、応答はより重要であると考えました。私は正しいですか?
HTTP インバウンド アダプターは、HTTP 要求を呼び出すメッセージ エンドポイント (実際にはメッセージの開始点) として使用されます。これは、REST サービスの URL、たとえば "http://myRest/transfer/next" を呼び出し、結果を SI メッセージ チャネルにフィードします。 . そうですか?
例を見つけるのが難しいか、他の例を私のニーズを満たすものに変換するのは難しいです. Java または Dsl で構成したいのに対し、XML で構成された例はさらに多くあります。
TransferRequest
メッセージハンドラーによって処理されるためにSIチャネル「transfer_next_channel」に供給される私のオブジェクトのJSON表現を返すRESTサービス(私が提供する)が呼び出される例を探しています。
私のコード アプローチはかなりスケルトンのようなものです。どうすればいいですか?
@Bean
public IntegrationFlow httpInboundFlow() {
return IntegrationFlows
.from(Http.inboundChannelAdapter("http://myRest/transfer/next")
.requestMapping(r -> r
.methods(HttpMethod.GET)
.consumes("text/html"))
.requestPayloadType(TransferRequest.class)
.headerMapper(myHeaderMapper)
)
.channel("transfer_next_channel")
.get();
}
@Bean
@ServiceActivator(inputChannel = "transfer_next_channel")
public MessageHandler handler() {
return new MessageHandler() {
@Override
public void handleMessage(Message<?> message) throws MessagingException {
System.out.println("myHandler: " + message.getPayload());
System.out.println("myHandler: " + message.getHeaders());
}
};
}
編集1
すべては、TCP/IP を介して永続的な DB 状態から文字列メッセージへの人物のデータ メッセージを生成することです。最初に、どのメッセージが必要かという情報があります。外部 REST サービスを介して提供されます。結果はTransferRequest
エンティティです。これから、メッセージを生成する必要があります。必要なデータ メッセージであるTransferRequest
何らかの種類に変換するための別の外部 REST サービス呼び出しです。DataMessage
その結果は、TCP/IP クライアントが接続されるとすぐに TCP/IP サーバー経由で配信されます。
編集2
メッセージチャネルは次のとおりです。外部サービスへのリクエスト「http://myRest/transfer/next」で始まり、TransferRequest
(を含むpersonId
)を取得し、それをメッセージとしてチャネルにプッシュし、トランスフォーマー/ハンドラーが(別の)外部サービスをリクエストします」 http://myRest/message/{personId}" を取得DataMessage
し、メッセージとして別のチャネルにプッシュし、メッセージを TcpOutboundGateway にプッシュして外部システムで受信できるようにするハンドラー。