SI-DSLを使用してSIフローを作成していますので、この質問がSi-DSLのみに関連するのかSIおよびSI- DSL。フローステップとしてのMessageSource
私のユースケースは、この
ようなものです - キュー からメッセージを取得 - データベーステーブル にメッセージを保存する - 将来 にいくつかの点でいくつかの特定の状態 でメッセージを選択することで、それらのメッセージを取得する - さらに処理メッセージ...
私の問題は3番目のステップです。私はJdbcPollingChannelAdapterをMessageSourceとして使うことができるので、3番目のステップが1番目の場合は簡単です。しかし、私はフローの途中で1つを使用する方法を見つけることができませんでした。だから、DSLの用語で、(dbDataMessageSourceがJdbcPollingChannelAdapterです)私は
IntegrationFlows
.from(dbDataMessageSource(), p -> p.poller(Pollers.fixedRate(24, TimeUnit.HOURS)))
を行うことができます。しかし、私は行うことはできません
代わりに ".handle" 私はゲートウェイを使用しようとしたのIntegrationFlows
.from(Jms.messageDrivenChannelAdapter(...))
.handle(new JdbcOutboundGateway(...)
.handle(dbDataMessageSource(), p -> p.poller(Pollers.fixedRate(24, TimeUnit.HOURS)))
、ブリッジ、handleWithAdapter、しかし注目に値する。
アイデア?
乾杯。
こんにちは、お返事ありがとうございます。私はそれをすることの短所を含めて、フローの接続について知っていました。私はこれを試しています。これは、ユースケースでSIとDSLを調べるプロトタイプであるためです。また、(私がまだ調査していなかった)私は、プロセス全体(エラー処理と制御バス)に同じインフラストラクチャを持たせるより良い方法を探していました。最後に、私たちのユースケースは、私が言ったものより少し複雑なものになる可能性があるからです。私はSIについて少しは知っていますが、2008年と2009年には多大な努力をしましたが、現在の実装についてもっと知るべきかもしれません。乾杯。 – amsmota
「不利益」について懸念しています。あなたは言う:「将来、特定の州によってどこかで読む」。ですから、 'JdbcOutboundGateway'の出力を' dbDataMessageSource() 'に接続するのはあなたの望むところです。最初の '.handle()'の出力は次の '.handle()'の入力です。使い慣れた ''と同じように。 * poll * DBを使用したいので、入力はありません。そのため、 'MessageSource'はフローを開始するが、続行しない種類のものです。そのためには、同じ 'JdbcOutboundGateway'を使うべきです。心配しないでください。 –
混在していますか?実際、JdbcOutboundGatewayは、フローの途中で使用できるPollable MessageSource(JdbcPollingChannelAdapter)を持っていて、私が記述したものとまったく同じです...しかし、私はプロダクション作業ではなく、いくつかのProof Of Conceptsをやっています。懸念を混ぜる時期です。ジェラルド・M・ワインバーグの原則に従う傾向があります。この場合、「ツールを悪用する3つの方法について考えることができない場合、そのツールの使い方を理解できません」。 :) – amsmota