2017-06-23 12 views
0

Oi 私は2つのbpelプロセスを持っています。プロセスAはメッセージをキューに入れ、プロセスBはメッセージを消費して何らかの作業を行います。 私が探しているのは、同時に処理されるメッセージの数を制限する方法です。プロセスBの同時実行数を制限します。JMSキューの制限消費者

adapter.jms.receive.threads - このパラメータは、アダプタエンドポイントがアクティブ化されたときに作成されるポーラースレッドの数を示します。デフォルトは1です。各ポーラー・スレッドは、独自に処理される独自のメッセージを受け取り、スループットを向上させます。

私はこのパラメータは私が探していることを行うと思いますが、私はそれとの違いは見ません。

私がテストしているのは、たくさんのメッセージをキューにプッシュしていて、adapter.jms.receive.threadsの値に関係なくすぐに実行インスタンスが作成されたことです。

このプロパティは、同時に処理される要求の数を制限するべきではありませんか?それがうまくいかない理由が考えられますか?構成が不足していますか?すべての矛盾の問題?

答えて

0

「adapter.jms.receive.threads」と記述されているため、使用している正確なバージョンは指定していません。少なくとも、Oracle BPEL 11g +以上であることを前提としています。

bpel.config.oneWayDeliveryPolicyプロパティのデフォルト値( "async.persist"に設定されています)を上書きしないと、問題が発生します。コンポーネントのbpel.config.oneWayDeliveryPolicyを「同期」に変更すると、問題が解決するはずです。

正確には、composite.xmlファイル内のコンポーネント定義に次のプロパティを追加します。

<property name="bpel.config.oneWayDeliveryPolicy" type="xs:string" many="false">sync</property>

関連する問題