2017-07-09 2 views
0

Je suis nouveau à Mule, et j'aime vraiment le Studio Anypoint. J'ai essayé de mettre un message à ActiveMQ. J'ai trouvé que si je met directement JMS après chaîne Payload, alors ça marche, je peux obtenir le message dans ActiveMQ. Comme ci-dessous:Quel est le point de terminaison correct de ObjectToJMSMessage?

enter image description here

Mais si je mets un objet au transformateur JMSMessage en elle:

enter image description here

Il continue à donner une erreur: java.lang.IllegalStateException: This transformer needs a valid endpoint. J'ai presque essayé toutes sortes de points de terminaison, mais sans succès. Je me demande quel devrait être le point final correct pour le transformateur?

Le code est assez simple:

<?xml version="1.0" encoding="UTF-8"?> 

<mule xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:wmq="http://www.mulesoft.org/schema/mule/ee/wmq" xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns:jms="http://www.mulesoft.org/schema/mule/jms" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" 
    xmlns:spring="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd 
http://www.mulesoft.org/schema/mule/jms http://www.mulesoft.org/schema/mule/jms/current/mule-jms.xsd 
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd 
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd 
http://www.mulesoft.org/schema/mule/ee/wmq http://www.mulesoft.org/schema/mule/ee/wmq/current/mule-wmq-ee.xsd"> 
    <http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8081" doc:name="HTTP Listener Configuration"/> 
    <jms:activemq-connector name="Active_MQ" brokerURL="tcp://localhost:61616" validateConnections="true" doc:name="Active MQ" specification="1.1" password="admin" username="admin"/> 
    <flow name="basic_tutorialFlow"> 
     <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/> 
     <set-payload value="hello world" doc:name="Set Payload"/> 
     <jms:object-to-jmsmessage-transformer doc:name="Object to JMSMessage"/> 
     <jms:outbound-endpoint connector-ref="Active_MQ" doc:name="JMS" topic="mytopic"/> 
     <object-to-string-transformer doc:name="Object to String"/> 
    </flow> 
</mule> 

Répondre

1

JMS Lorsqu'il est utilisé entre les éléments d'écoulement agit comme point final sortant (si vous observez votre xml il a déjà « jms: sortant-point final » .Quel est signifie qu'il faut une charge utile pour la publier dans la file d'attente ou le sujet sur lequel vous avez configuré le point de terminaison JMS).

Généralement, dans votre scénario, vous n'avez pas besoin d'un transformateur avant le point de sortie JMS sortant Mule transforme implicitement le message pour vous. En conséquence, vous pouvez créer un nouveau flux ou une application qui lit cette file d'attente/sujet qui est un point de terminaison entrant JMS (jms: point de terminaison entrant), en fonction de l'endroit où vous placez la mule JMS détermine si elle est entrante ou sortant).

Avec ce que vous réalisez est le modèle de fiabilité. Pour lequel vous pouvez en lire plus à ce sujet ici.

https://docs.mulesoft.com/mule-user-guide/v/3.8/reliability-patterns

+0

Merci! Je veux savoir quand devrais-je utiliser ce transformateur "Object to JMSMessage"? Et si je l'utilise, quel composant pourrait être son point final? –