2017-05-17 3 views
0

J'essaie d'utiliser recipientList pour envoyer à plusieurs points de terminaison JMS. J'utilise ActiveMQ comme courtier de messages. Mon problème est le suivant: que je mette l'URL en tant que nœud unique d'ActiveMQ, cela fonctionne parfaitement lorsque je mets une virgule de point de terminaison de basculement séparée, je comprends juste qu'elle sépare la virgule dans l'URL de basculement. Y a-t-il une manière que je puisse sauter cette séparation de caractère de virgule à l'intérieur du basculement?WSO2 ESB utilisant le basculement jms dans la liste des destinataires

Cela fonctionne:

jms:/myQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://myIP:61616&transport.jms.DestinationType=queue 

Mais cela ne fonctionne pas parce qu'il divise la virgule.

jms:/myQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=failover:(tcp://myIP:61616,tcp://myIP2:61616)&transport.jms.DestinationType=queue 

Dans mon cas, je concaténer plusieurs URIs comme celles ci-dessus avec « » pour faire le travail de recipientList, mais la virgule à l'intérieur du basculement fait échouer.

Y a-t-il une solution de rechange?

Merci,

Antonio

Répondre

0

Vous pouvez essayer comme ci-dessous au lieu de la virgule

<send> 
<endpoint key="jmsMBendpoint1"/> 
</send> 
<send> 
<endpoint key="jmsMBendpoint2"/> 
</send> 

ou vous pouvez utiliser Recipienlist endpoint d'envoyer un seul message à plusieurs points de terminaison. Après avoir défini le magasin de listes de destinataires comme localentry, fournissez-le comme clé de point de terminaison.

pour plus WSO2 ESB send to multiple endpoints

+0

Salut, Dans ce cas, j'utilise des points de terminaison dynamiques calculés en runtime, j'utilisais déjà la liste de destinataires pour l'envoi, donc je ne peux pas utiliser l'envoi multiple parce que l'application est exécutée je ne sais même pas combien de utiliser. J'avais déjà vérifié la documentation et le code et je n'ai pas pu obtenir de réponse à mon problème. Merci pour la réponse! –

0

Je ne sais pas quelle est la solution de contournement avec recipientlist mais une autre façon d'atteindre votre besoin est:

<property name="EIP_LIST" type="OM"> 
    <list xmlns=""> 
     <epr>jms:/myQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=failover:(tcp://myIP:61616,tcp://myIP2:61616)&amp;transport.jms.DestinationType=queue</epr> 
     <epr>jms:/myQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=failover:(tcp://myIP3:61616,tcp://myIP4:61616)&amp;transport.jms.DestinationType=queue</epr> 
    </list> 
</property> 
<iterate expression="$ctx:EIP_LIST//epr"> 
    <target> 
     <sequence> 
      <header name="To" expression="$body/epr"/> 
      <send/> 
     </sequence> 
    </target> 
</iterate>  

Il vous suffit de composer dynamiquement le contenu de EIP_LIST

+0

Je vais probablement opter pour cette solution. Merci beaucoup! –