我有一个允许动态创建和启动路由的应用程序。例如,用户可以创建从IMAP到文件的路由,并启动它。
问题:多个路由通过IMAP阅读同一邮件帐户。
Caused by: org.apache.camel.FailedToStartRouteException: Failed to start route c1152_route because of Multiple consumers for the same endpoint is not allowed: imap://localhost:3143?delay=1000&password=xxxxxx&searchTerm.fromSentDate=now-24h&searchTerm.unseen=false&username=user@user
我尝试了两种方法:
1.正在创建从IMAP到多个收件人路由的其他单个路由。此解决方案可以使用,但我不确定是否使用此解决方案。它需要对路由的启动/停止进行额外检查,因为可能很少有路由依赖于此解决方案。
from(imap())
.recipientList(imapMsgToDirectChannelRouter())
2.正在使用唯一URI创建IMAP终结点。例如,每个路由都有唯一的searchTerm.fromSentDate。此方法也适用。
这个问题有更好的解决办法吗?
1条答案
按热度按时间zaqlnxep1#
我肯定会选择选项#1(收件人列表)。
我不明白为什么要停止和启动“主”路由(“imap”路由)。根据您添加或删除的收件人,您将启动和停止相应的子路由,但不会触及主路由。
我在想这样的事情:
其中,接收者的精确列表的实时计算被委托给某个bean。这样,您不必接触“主路由”,而只需让bean知道接收者