2013-07-31 26 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

我想動態添加入站適配器,這可能嗎? –

相關問題