2017-09-06 2 views
0

J'ai une file d'attente où je veux traiter les messages sélectionnés et je suis en mesure d'y parvenir en utilisant Java DSL comme ci-dessous:Comment créer plusieurs objets JmsQueueEndpoint pour différents sélecteur en utilisant la classe Endpoint

from("amq:queue:{{jms.miscQueue}}?transacted=false&selector=DSBSelectorID %3D '" + SELECTOR_ID_TRANSACTION_A2A + "'") 

from("amq:queue:{{jms.miscQueue}}?transacted=false&selector=DSBSelectorID %3D '" + SELECTOR_ID_TRANSACTION_A2P + "'") 

Maintenant, je veux atteindre même en créant JMS Endpoints comme ci-dessous (en fait fonctionne Java DSL bien, mais il devient difficile de déboguer au fil du temps en option de plus en plus est intégré à l'URI):

JmsQueueEndpoint activeMQEndpointA2A = endpoint("amq:queue:{{jms.miscQueue}}", JmsQueueEndpoint.class); 
activeMQEndpointA2A.setTransacted(false); 
activeMQEndpointA2A.setSelector("DSBSelectorID %3D 'Route-Transaction-A2A'"); 


JmsQueueEndpoint activeMQEndpointA2P = endpoint("amq:queue:{{jms.miscQueue}}", JmsQueueEndpoint.class); 
activeMQEndpointA2P.setTransacted(false); 
activeMQEndpointA2P.setSelector("DSBSelectorID %3D 'Route-Transaction-A2P'"); 

et quand je l'utilise activeMQEndpointA2A et activeMQEndpointA2P dans mon Routes Camel, cela ne fonctionne que pour le premier Point final et le deuxième point d'extrémité est incapable de se connecter à la file d'attente et ne cesse de lancer erreur comme ci-dessous

Configuration du message JMS auditeur invocateur échoué pour la destination « io.az.jms » - en essayant de récupérer. Cause: DSBSelectorID% 3D 'Route-Transaction-A2P'

Quelqu'un peut-il suggérer si elle est réalisable grâce à Java Endpoint ou non? Aussi, si j'ai plusieurs routes et qu'il y a plusieurs options à définir sur l'URI Endpoint, quelle est l'approche recommandée?

+0

Avez-vous ajouté ces points d'extrémité à 'context'? – Gautam

Répondre

1

Vous ne pouvez pas faire cela, obtenir un point de terminaison et ensuite muter ses propriétés, puis récupérer le point de terminaison (vous obtenez la même instance que le premier), par exemple A2A et A2P sont la même instance.

Vous devez utiliser paramètres uniques et, par conséquent, le sélecteur devrait être dans le uri