Apache camel IMAP同一邮件帐户的多个使用者

bejyjqdl  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(270)

我有一个允许动态创建和启动路由的应用程序。例如,用户可以创建从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。此方法也适用。
这个问题有更好的解决办法吗?

zaqlnxep

zaqlnxep1#

我肯定会选择选项#1(收件人列表)。
我不明白为什么要停止和启动“主”路由(“imap”路由)。根据您添加或删除的收件人,您将启动和停止相应的子路由,但不会触及主路由。
我在想这样的事情:

from("imap:...")
  .id("master-route")
  .recipientList( simple("bean:computeRecipients") )
  .parallelProcessing();

其中,接收者的精确列表的实时计算被委托给某个bean。这样,您不必接触“主路由”,而只需让bean知道接收者

相关问题