2013-03-26 106 views
0

我们的应用程序部署在两个不同的服务器(Weblogic)中。我们有按计划发送电子邮件的功能。由于我们的应用程序运行在两个不同的服务器上,因此用户将获得2封电子邮件(每个服务器都有)我们需要将其限制为1.想法是受欢迎的。多封电子邮件

+0

您可以在两台服务器之间使用共享数据库,您可以跟踪哪些电子邮件发送 – Apurv 2013-03-26 08:59:06

回答

1

当你还没有完全,但仍然说明你的系统一般考虑,也有这个问题

  • 标记在中心位置发送电子邮件可能是多种解决方案的数据存储或内存缓存

    把所有预定的电子邮件在一个中央存储库中的高速缓存或数据存储和每个电子邮件发件人应用程序标记发送的电子邮件,因为它发出的电子邮件,因此其他应用程序将检查所有电子邮件,如果它是不是已经被其他电子邮件发件人组件发送

  • 制作的电子邮件,其中来自获取数据和发送定期的电子邮件单独的组件: 一个可能的解决方案可能是电子邮件发送组件应与主应用程序分开,并部署在同一个地方,并与电子邮件数据存储或交互存储库并发送预定的电子邮件。

希望这有助于

+0

感谢您的建议:)我们计划使用选项1. – NightsWatch 2013-03-27 04:53:41

+0

当您使用jee时,您触发的作业可能发布一个消息到一个分布式队列,然后消耗,使用一个消息驱动Bean,确保只有一个cluser消耗节点并发布电子邮件 – darrenmc 2013-03-27 17:46:14

+1

@ user2198540如果你发现任何有用的参考答案,可以考虑将其标记为“正确” 。将有助于让游客发现哪一个(对你而言)最有帮助。 (也奖励具有声望点的答复者) – 2014-01-02 18:46:02

0

另一个可能的解决办法是有一个队列,你有一个UDQ和MDB消耗的消息,并发送电子邮件。当您处理很多消息时,这个解决方案将在2个托管服务器中的一个出现故障并扩展时运行。

使用DB如果你的负载是高可能会增加的瓶颈。

把一台服务器上的邮件组件可以在高可用性妥协。

+0

我已经实现了使用服务器名称的逻辑。我知道将在其中部署应用程序的服务器的名称,因此使用INetAddress我得到了服务器的名称,并在数据库中创建了必须作为我的电子邮件发送服务器的条目,该条目应作为监视服务器(此服务器将发送电子邮件一旦第一台服务器出现故障)。我能够达到我实际需要的更好的解决方案:)。 – NightsWatch 2014-01-03 11:09:57

相关问题