我通過JMS發送下面的JSON消息流:如何將JMS消息的JSON的DataMapper
[{ 「的SalesOrderID」: 「00001-2-3」, 「saleName」:「汽車銷售「,」status「:」processing「},{」salesOrderId「:」00004-5-6「,」saleName「:」House Sale「,」status「:」processing「}]
這是我的策略:
<flow name="integration-consumer-client2" doc:name="integration-consumer-client2">
<jms:inbound-endpoint queue="client2.queue" connector-ref="Active_MQ" doc:name="JMS"/>
<logger message="Consumes Client 2 = #[payload]" level="INFO" doc:name="Logger"/>
<logger message="Client 2 Correlation = #[message.correlationId]" level="INFO" doc:name="Logger"/>
<vm:outbound-endpoint exchange-pattern="one-way" path="response" doc:name="VM"/>
</flow>
<flow name="integration-consumer-client" doc:name="integration-consumer-client">
<jms:inbound-endpoint doc:name="JMS" connector-ref="Active_MQ" queue="client1.queue">
</jms:inbound-endpoint>
<logger message="Consumes Client = #[payload]" level="INFO" doc:name="Logger"/>
<logger message="Client Correlation = #[message.correlationId]" level="INFO" doc:name="Logger"/>
<vm:outbound-endpoint exchange-pattern="one-way" path="response" doc:name="VM"/>
</flow>
<flow name="integration-flow" doc:name="integration-flow">
<vm:inbound-endpoint path="response" doc:name="VM">
<message-properties-transformer>
<add-message-property key="MULE_CORRELATION_GROUP_SIZE" value="2" />
</message-properties-transformer>
<collection-aggregator/>
</vm:inbound-endpoint>
<logger message="after vm = #[payload]" level="INFO" doc:name="Logger"/>
<request-reply doc:name="Request-Reply">
<jms:outbound-endpoint queue="queue.validation" connector-ref="Active_MQ" doc:name="JMS">
<jms:object-to-jmsmessage-transformer doc:name="Object to JMSMessage"/>
</jms:outbound-endpoint>
<jms:inbound-endpoint queue="queue.validation.response" connector-ref="Active_MQ" doc:name="JMS"/>
</request-reply>
<logger message="Siebel Response in ESB = #[payload]" level="INFO" doc:name="Logger"/>
</flow>
因此,兩個消費者消息被彙總,然後通過使用JMS的請求回覆發送到另一個流。在該流程中,消息以 [{「salesOrderId」:「00001-2-3」,「saleName」:「Car Sale」,「status」:「processing」},{「salesOrderId」:「00004-5 -6" ,‘saleName’:‘房屋買賣’,‘狀態’:‘處理’}]
和流量:
<jms:activemq-connector name="Active_MQ" username="admin" password="admin" brokerURL="tcp://localhost:61616" validateConnections="true" doc:name="Active MQ"/>
<data-mapper:config name="JSON_To_JSON" transformationGraphPath="json_to_json.grf" doc:name="JSON_To_JSON"/>
<flow name="validation-flow" doc:name="validation-flow">
<jms:inbound-endpoint doc:name="JMS" connector-ref="Active_MQ" queue="queue.validation" >
<jms:jmsmessage-to-object-transformer doc:name="JMSMessage to Object"/>
</jms:inbound-endpoint>
<logger message="Payload = #[payload]" level="INFO" doc:name="Logger"/>
<data-mapper:transform config-ref="JSON_To_JSON" doc:name="JSON To JSON"/>
<logger message="inside siebel after mapper = #[payload]" level="INFO" doc:name="Logger"/>
</flow>
我想通過一個映射器發送數據,因爲我想將狀態更改爲「完成」。但在json到json映射器之後,結果是[B @ 2b9f82b。如何將jms消息轉換爲更易於讀寫的映射器?
感謝您的答覆,如果我把一個對象到字符串或字節數組到字符串變換器之後,我得到下面的有效載荷= [] –
然後你的數據映射器轉換是錯誤的,它什麼也沒有。我會開始檢查*元素映射*(對話框的頂部中心)。 –
通過執行json-to-map數據映射器,然後在使用對象到json轉換器的映射器之後進行管理。由於一些奇怪的原因,這是有效感謝您的幫助 –