2016-03-26 14 views
0

特定のタスク(マージ)を実行するのに40スレッド、別のタスクを実行するスレッドが20個必要です(永続性)。マージには持続性より約5倍の時間がかかります。 私はこの並行性を達成するためにメッセージ駆動型Beanを使用しています。MDB並行インスタンスが起動しない

は、私は次のような構成

@MessageDriven(activationConfig = { 
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), 
    @ActivationConfigProperty(propertyName = "destination", propertyValue = "testing/RecordMerger"), 
    @ActivationConfigProperty(propertyName = "maxSessions", propertyValue = "40") 
}) 

で1 MDB RecordMergerを作成し、私は永続化のために同じようなことをした

@MessageDriven(activationConfig = { 
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), 
    @ActivationConfigProperty(propertyName = "destination", propertyValue = "testing/RecordPersistor"), 
    @ActivationConfigProperty(propertyName = "maxSessions", propertyValue = "20") 
}) 

<Container id="MyJmsMdbContainer" ctype="MESSAGE"> 
    ResourceAdapter = MyJmsResourceAdapter 
    InstanceLimit = 40 
</Container> 

を次のようにtomee.xmlでの私の設定ですレコードマージキューは非常に高速な生産をしているので、常に新しい要素がありますレコードマージキュー。レコードマージキューは、データをレコード持続性キューに入れます。

私が直面している問題は、レコードの合併が40スレッドを使用するように設定されていると、私のtomemerサーバがレコードの永続性のMDBをインスタンス化せず、レコードがそのキューに蓄積されるということです。レコードの合併のmaxSessionプロパティを20に減らすと、両方のMDBがインスタンス化され始めます。

MDBの両方が実行され、レコードの合併が40のスレッドを持っていることを確認するために、必要なことを教えてください。

答えて

0

リソースアダプタ定義(tomee.xml)にthreadPoolSize = 40(デフォルトは30)を設定する必要があります

関連する問題