2017-06-23 3 views
0

Oi J'ai deux processus bpel. Le processus A place le message dans une file d'attente et le processus B consomme les messages et fonctionne. Ce que je cherche est un moyen de limiter le nombre de messages traités en même temps. Donc, limiter le nombre de processus B s'exécutant simultanément.Consommateurs de limite de file d'attente JMS

adaptateur.jms.receive.threads - ce paramètre indique le nombre de threads d'interrogation créés lorsqu'un point de terminaison d'adaptateur est activé. La valeur par défaut est 1. Chaque thread d'interrogation reçoit son propre message qui est traité indépendamment et permet ainsi d'augmenter le débit.

Je pense que ce paramètre fait ce que je cherche mais je ne vois pas de différence avec cela. Ce que je fais pour le tester est de pousser un tas de messages dans la file d'attente et immédiatement il a créé une instance d'exécution, quelle que soit la valeur que j'ai dans le fichier adapter.jms.receive.threads.

Cette propriété ne devrait-elle pas limiter le nombre de requêtes traitées simultanément? Pouvez-vous penser à une raison pour laquelle cela ne fonctionne pas? Ai-je manqué une configuration? Un problème de compatibilité?

Répondre

0

Vous n'avez pas spécifié quelle version exacte que vous utilisez, mais parce que vous avez mentionné « adapter.jms.receive.threads » je suppose que vous êtes au moins + 11g Oracle BPEL.

Le comportement décrit se produit si vous ne remplacez pas la valeur par défaut de la propriété bpel.config.oneWayDeliveryPolicy (définie sur "async.persist"). Changer bpel.config.oneWayDeliveryPolicy sur votre composant pour "synchroniser" devrait résoudre votre problème.

Précisément, ajoutez la propriété suivante à la définition du composant dans le fichier composite.xml:

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