我有一种情况,我需要应用程序将消息发送到消息代理。然后,另一个监听代理的客户端必须使用队列中的消息,确定它们是什么类型的消息,并将消息传递给适当的处理程序。
例如,如果Fizz
POJO 被序列化为 JSON,然后发送到代理,则其他进程必须使用它,将它从 JSON 反序列化回Fizz
实例,然后知道将其传递Fizz
给FizzHandler
处理器。消息也一样Buzz
:它应该被反序列化回 aBuzz
并发送到BuzzHandler
等。
我相信路由的伪代码应该是这样的:
from(broker)
.unmarshal().json(JsonLibrary.Gson)
.dynamicRouter(someMechanismForDeterminingHandler)
我相信动态路由器是解决这个问题的合适处理器,但不是 EIP 专家,我可能不适合我。
这里有两个大问题:
- Camel-GSON 怎么知道一种类型的 JSON 代表一个
Fizz
对象,而另一种类型的 JSON 代表一个Buzz
对象? - 应该使用什么 EIP/Camel DSL/处理器将反序列化消息路由到正确的处理程序?