2017-06-23 4 views
0

Oi Ich habe zwei bpel Prozesse. Prozess A stellt eine Nachricht in eine Warteschlange und Prozess B verbraucht die Nachrichten und führt einige Aufgaben aus. Was ich suche, ist eine Möglichkeit, die Anzahl der Nachrichten zu begrenzen, die gleichzeitig behandelt werden. So begrenzen Sie die Anzahl der gleichzeitig laufenden Prozesse.JMS Warteschlange Limit Verbraucher

adapter.jms.receive.threads - Dieser Parameter gibt die Anzahl der Poller-Threads an, die erstellt werden, wenn ein Adapterendpunkt aktiviert wird. Der Standardwert ist 1. Jeder Poller-Thread erhält seine eigene Nachricht, die unabhängig verarbeitet wird und somit einen erhöhten Durchsatz ermöglicht.

Ich denke, dass dieser Parameter tut, was ich suche, aber ich sehe keinen Unterschied damit.

Was ich tue, um es zu testen, ist es, eine Reihe von Nachrichten in die Warteschlange zu pushen und sofort erstellt eine Ausführungsinstanz, egal welchen Wert ich habe in adapter.jms.receive.threads.

Sollte diese Eigenschaft die Anzahl der Anfragen nicht gleichzeitig begrenzen? Kannst du einen Grund dafür finden, dass es nicht funktioniert? Fehle ich irgendeine Konfiguration? Irgendein Kompatibilitätsproblem?

Antwort

0

Sie haben nicht angegeben, welche genaue Version Sie verwenden, aber weil Sie "adapter.jms.receive.threads" erwähnt haben, nehme ich an, dass Sie mindestens auf Oracle BPEL 11g + sind.

Das beschriebene Verhalten tritt auf, wenn Sie den Standardwert der Eigenschaft bpel.config.oneWayDeliveryPolicy (die auf "async.persist" festgelegt ist) nicht überschreiben. Wenn Sie bpel.config.oneWayDeliveryPolicy auf Ihrer Komponente auf "sync" umstellen, sollte Ihr Problem gelöst werden.

Gerade, fügen Sie die folgende Eigenschaft auf Ihre Komponentendefinition innerhalb composite.xml Datei:

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

Verwandte Themen