J'inséré un contenu json
dans un queue
de WSO2 Message Broker
en utilisant un API
de WSO2 ESB
:WSO2 ESB message Processeur: N'a pas reçu javax.jms.ObjectMessage
<?xml version="1.0" encoding="UTF-8"?>
<inSequence xmlns="http://ws.apache.org/ns/synapse">
<property name="Accept" scope="transport" type="STRING" value="application/json"/>
<call>
<endpoint>
<http method="GET" uri-template="http://localhost:9769/services/orderApi/orders"/>
</endpoint>
</call>
<iterate continueParent="true" expression="//orders/order">
<target sequence="insertOrdersMQ"/>
</iterate>
<respond/>
</inSequence>
Dans ce API
, j'Iterated à la réponse json
du endpoint
et insérés les commandes dans un Message Broker's queue
utilisant ce sequence
:
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="insertOrdersMQ" xmlns="http://ws.apache.org/ns/synapse">
<log level="custom">
<property name="Log: " value="Inserting order on queue"/>
</log>
<property name="OUT_ONLY" value="true"/>
<property name="FORCE_SC_ACCEPTED" scope="axis2" value="true"/>
<send>
<endpoint>
<address uri="jms:/orders_mb?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.wso2.andes.jndi.PropertiesFileInitialContextFactory&java.naming.provider.url=repository/conf/jndi.properties&transport.jms.DestinationType=queue"/>
</endpoint>
</send>
</sequence>
Ensuite, je créé un Message Processor
à WSO2 ESB
, parce que je veux consommer ces messages sur orders_mb queue
et utiliser ensuite dans un autre sequence
. Voici le code du Message Store
et Message Processor
:
<messageStore name="orders_Store" class="org.apache.synapse.message.store.impl.jms.JmsStore" xmlns="http://ws.apache.org/ns/synapse">
<parameter name="java.naming.factory.initial">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
<parameter name="java.naming.provider.url">repository/conf/jndi.properties</parameter>
<parameter name="store.jms.destination">orders_mb</parameter>
<parameter name="store.jms.JMSSpecVersion">1.1</parameter>
<parameter name="store.producer.guaranteed.delivery.enable">false</parameter>
<parameter name="store.failover.message.store.name">orders_mb</parameter>
</messageStore>
<messageProcessor name="ordersProcessor" class="org.apache.synapse.message.processor.impl.sampler.SamplingProcessor" messageStore="orders_Store" xmlns="http://ws.apache.org/ns/synapse">
<parameter name="interval">1000</parameter>
<parameter name="concurrency">1</parameter>
<parameter name="sequence">insertOrdersDB</parameter>
<parameter name="is.active">true</parameter>
</messageProcessor>
Enfin, voici le sequence
que le Message Processor
envoyer le message du queue
:
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="insertOrdersDB" xmlns="http://ws.apache.org/ns/synapse">
<log level="full">
<property name="Log: " value="Removing order from queue"/>
</log>
</sequence>
Quand j'appelle l'API resource
pour insérer les commandes dans queue
, ça marche. Cependant, lorsque le Message Processor
consommera, il se déconnecte
[13/07/2017 10: 06: 34856] WARN - JmsConsumer [orders_mb-C-1]. N'a pas reçu un javax.jms.ObjectMessage
Je ne sais pas ce qui se passait mal, et j'ai vu this question qui pose des questions sur le même problème, cependant, je l'ai déjà inséré les propriétés qui sont obligatoires et non travaillé ici encore.