2016-03-26 35 views
0

Ich habe eine Anforderung, wo ich 40 Threads benötigen, um eine bestimmte Aufgabe (Zusammenführen) und etwa 20 Threads für eine andere Aufgabe (Persistenz) zu tun. Das Zusammenführen dauert etwa fünfmal länger als die Persistenz. Ich verwende Message Driven Beans, um diese Nebenläufigkeit zu erreichen.MDB gleichzeitige Instanzen nicht gestartet

habe ich einen MDB RecordMerger mit folgenden Konfiguration

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

und ich habe etwas ähnliches für die Persistenz

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

Meine Konfiguration in tomee.xml ist wie folgt

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

Die recordmerging Queue hat eine sehr schnelle Produktion, es gibt also immer neue Elemente in der Datensatzzusammenführungswarteschlange. Die Datensatzzusammenführungswarteschlange legt die Daten in die Datensatzpersistenzwarteschlange.

Das Problem, dass ich konfrontiert ist, ist, dass, wenn Datensatz Merger für die Verwendung von 40 Threads konfiguriert wurde, mein tomee Server nicht instanz Persistenz MDB instanziiert, was dazu führt, dass Datensätze in dieser Warteschlange angehäuft werden. Wenn ich die Eigenschaft maxSession des Datensatz-Mergers auf 20 reduziere, werden beide MDBs instanziiert.

Kann mir bitte jemand sagen, was ich tun muss, um sicherzustellen, dass beide MDBs laufen und Rekord Fusion hat 40 Threads.

Antwort

0

Sie müssen wahrscheinlich threadPoolSize = 40 (Standardwert 30) in der Ressourcenadapterdefinition (tomee.xml)

festlegen