我们有 ActiveMQ,系统中发生的事件会发布到它上面。该项目涉及用户将实体添加到他们的监视列表中,每当这些实体发生事件时,我希望向感兴趣的参与者发送一封电子邮件。
该用例大致可以转化为某人对目录上的产品信息页面表示兴趣,并且每当该产品发生任何活动时都会发送一封电子邮件(价格下降,有正面评价等)。我将这种交互建模为骆驼路线。
因此,例如,如果用户在此产品的评分等于 5 时说给我发电子邮件,那么以下路由将添加到骆驼上下文中:
from("activemq:topic:events.product.save").filter().xpath("/object[<object id>]/rating").isEqualTo("5").to("email:<user's email>")
类似地,如果用户想要在产品有新评论时得到通知,则会创建另一条路线,依此类推。当每个用户开始添加他们感兴趣的手表时,这可能最终会创建数千条路线。
我的一些问题是:
这是创建动态路由的可接受方式吗?我正在考虑的一种选择是使用收件人列表。但是我还没有想出一个解决方案,它可以优雅地将消息路由到将返回收件人列表的 bean。例如,对于上面解释的情况,bean 是否会有一堆 if-else 来查看要返回哪个收件人列表?
camelcontext 具有从 xml 文件加载路由的方法,但没有保留现有路由的方法。保持这些动态创建的路由最简单(和有效)的方法是什么?骆驼用户列表中的这个线程总结了我的要求。