2013-07-31 47 views
0

我使用spring的imap机制为了从我的帐户接收电子邮件到我的服务器。春季整合imap - 来自同一个域的多个电子邮件帐户

这个工程就像一个魅力。

无论如何,一个新的需求来了 - 而不是听一个电子邮件帐户,我将不得不听多个帐户。

Iv'e试图为每个帐户创建一个新频道。有用!

问题是,我添加的每个通道意味着一个正在运行的新线程。
由于我在谈论大量的帐户,这是一个安静的问题。

我的问题是:

由于所有的电子邮件帐户(我想听听)是在同一个域中,即: [email protected] [email protected] [email protected] ....

是否可以使用多个帐户创建单个频道?

除了定义N个新频道,我还有其他选择吗?

谢谢。 Nir ​​

回答

3

我假设你是指通道适配器,而不是通道(多通道适配器可以发送消息到同一通道)。

不,您不能为多个帐户使用单个连接。

这是底层Internet邮件协议的限制。

如果您使用的是imap空闲适配器,是的,这不会很好地扩展,因为它需要每个适配器的线程。但是,如果您只是谈论几十个帐户,这可能不是问题。对于更多帐户,使用轮询适配器可能会更好。但是,即使如此,除非是固定数量的帐户,否则配置可能会很繁琐(但可以通过编程启动新适配器)。

对于像这样的复杂场景,您可能需要考虑直接使用JavaMail API编写自己的“适配器”,并以更复杂的方式管理连接(但您仍然需要为每个帐户单独建立连接)。它不必是一个“真正的”适配器,只是一个与JavaMail进行交互的POJO。然后,当您收到来自其中一个帐户的消息时,请使用<gateway/>将其发送到频道。

+0

你可以给我示例代码为每个帐户单独连接 –

+0

只需为每个帐户添加一个单独的入站适配器;他们可以发送到同一个频道。 –

+0

我想动态添加入站适配器,这可能吗? –

相关问题