【问题标题】:how to change mule's imap mail fetch order?如何更改 mule 的 imap 邮件获取顺序?
【发布时间】:2014-05-19 17:38:27
【问题描述】:

我有一个 IMAP 连接,可以使用 Mule 获取电子邮件。我遇到了问题。

这是我的两个简单要求:

  1. 我想以相反的顺序获取电子邮件。 (最新优先)
  2. 忽略 SEEN 消息,但不要删除它们。

我正在查看 mule (3.3.1) 使用的代码: org.mule.transport.email.RetrieveMessageReceiver.poll()。

代码似乎正在从消息 1 中获取消息。

348: Message[] messages = folder.getMessages(1, batchSize);

这里获取的消息在循环中处理:

org.mule.transport.email.RetrieveMessageReceiver.messagesAdded(MessageCountEvent)

142: if (!messages[i].getFlags().contains(Flags.Flag.DELETED)
143:      && !messages[i].getFlags().contains(Flags.Flag.SEEN))

整个逻辑的作用是试图读取旧的未读消息。代码回到第 348 行并执行

folder.getMessages(1, batchSize);

再次,并收到相同的消息,并继续等待。如何更改获取的顺序。

仅供参考:将 MS Exchange 用于 IMAP

【问题讨论】:

    标签: imap mule esb


    【解决方案1】:

    不确定您为什么说 Mule 试图阅读“旧的未读消息”?它实际上只是试图读取未读消息,即未删除或未查看。

    无论如何,理论上 Mulesque 排序消息的方式是使用resequencer。不幸的是,邮件消息接收者没有设置任何必需的控制属性来让 Mule 将接收到的消息作为一个批处理来处理,因此这不起作用。

    所以我能想到的唯一解决方案是扩展 org.mule.transport.email.RetrieveMessageReceiver 并使用 <service-overrides /> 子元素在 IMAP 连接器上注册您的自定义版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      • 1970-01-01
      • 2017-06-02
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      • 2014-06-10
      相关资源
      最近更新 更多