/ / Spring-integration / ActiveMQ abonnez-vous à plusieurs destinations dans un seul thread - multithreading, activemq, spring-integration

Spring-integration / ActiveMQ s'abonner à plusieurs destinations dans un seul thread - multithreading, activemq, spring-integration

J'utilise plusieurs <si:service-activator>"le sable <jms:message-driven-channel-adapter>"s pour vous abonner à plusieurs files d'attente et sujets. Les messages de chaque destination sont reçus dans un thread séparé, ce qui signifie que mon code de réception est plein de verrous pour protéger l’état interne mutable.

J'aimerais que mon code de réception ne soit pas verrouillé. Est-il possible de configurer Spring-Integration / Activemq pour recevoir de plusieurs destinations sur le même thread?

Si cela n’est pas possible, je peux penser à deux alternatives:

  1. Démarrer mon propre thread de traitement qui lit dans une file d'attente de blocage, place tous les messages reçus dans cette file d'attente.

  2. Répartissez tous les messages reçus sur une même destination et utilisez-les.

Quelqu'un a-t-il de meilleures idées?

Réponses:

1 pour la réponse № 1

Utilisez le motif générique sur une seule file d'attente.

Autrement dit, au lieu de lire dans deux files d'attente, utilisez une seule file d'attente et spécifiez toutes les files d'attente que vous souhaitez lire dans le nom.

C'est: "QUEUE.NR1,QUEUE.NR2" ou "SOME.PREFIX.>" pour lire toutes les files d'attente avec ce préfixe. Votre code client traite cela comme une seule file d'attente.