我希望有人可以解釋更多關於如何配置駱駝編組和解組數據。我有一個路由調用一個bean來確定一個recipientList。這是基於消息的內容(protobuf)。駱駝路線內重新編組protobuf
路由的配置是這樣的: -
<route id="Splitter">
<from uri="activemq:notification.splitter" />
<unmarshal ref="notificationProto" />
<recipientList>
<method bean="NotificationSplitter" method="splitNotification" />
</recipientList>
</route>
豆子工作正常,但下游路線抱怨: -
org.apache.camel.RuntimeCamelException: java.lang.RuntimeException: Unable to find proto buffer class
下游路由具有完全相同的protobuf DATAFORMAT配置爲上面的路線。如果我直接路由到下游隊列(即繞過bean並硬編碼「到」隊列),這意味着我也可以跳過解組步驟,它工作正常。
我猜我需要在Camel將消息放到目標隊列之前重新編組數據,但我不知道如何在XML中配置它。我試着簡單地增加......
<marshal ref="notificationProto" />
...的recipientList已被確定後,但它並沒有做到這一點(我假設,因爲駱駝已經由當時派出的消息)。
另一種方法是從bean內部進行解組,然後交換機上的數據可能保持不變。我不太清楚如何做到這一點。它會起作用嗎?
感謝您的任何提示。
J.
謝謝。我喜歡路由傳送的想法。我的意思是我可以有一個單一的重新編組路線,然後將其有效注入收件人列表。從閱讀的鏈接,它看起來像在實踐中我有一個分流模式代替收件人列表,創建多個消息,併爲每個不同的路由名單(即做了重新編組,然後發送到最終目的地)。這將需要幾天時間才能測試,但會報告回來。 –
嗨, 我又回到了這個,看着攔截選項。這是一個非常簡潔的解決方案。所有目的地列表中的隊列開始用相同的字符串。所以,我將以下內容添加到駱駝環境中,並且它完美地工作。 ' \t \t <編組REF =」 notificationProto」 /> interceptSendToEndpoint>'再次 謝謝, J. –