我希望有人可以解释更多关于如何配置骆驼编组和解组数据。我有一个路由调用一个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. –