【问题标题】:Why JMS to send mail by Java Mail为什么 JMS 通过 Java Mail 发送邮件
【发布时间】:2019-10-16 20:21:15
【问题描述】:

场景 1:

  1. 在您的服务器中设置 JMS 队列
  2. 向生产者发送消息的 Java 代码 创建一个 JMS Producer,当被调用时,它应该接收电子邮件数据(主题、正文、收件人、抄送等)并将其发布到步骤 1 中的队列设置
  3. 创建一个JMS Consumer,它订阅第1步创建的Queue,它的onMessage应该调用JavaMail API来发送邮件。

场景 2:

  • 直接调用JavaMail API发送邮件。

我知道如何使用以及 JMS 和 Java Mail 正在做什么。这就是为什么我们必须从场景 2 转到场景 1 来发送邮件。最初我们做了场景 2。现在我们正在使用场景 1。来自不同Big Application的部分正在发送邮件,所以我们使用JMS Queue,会有队列的消费者从那里发送邮件。请帮助我理解。

【问题讨论】:

  • 不,您是在问为什么这个由您参与的一群人构建的系统会以这种方式运行。所以问问他们,他们比网上任何一群随机的陌生人都知道为什么。

标签: java email jms jakarta-mail


【解决方案1】:

您会在大型应用程序中使用此机制,原因有两个:

1) 您不希望您的客户必须等待邮件发送。

2) 如果您因任何原因失去与邮件服务器的连接,您不希望丢失邮件。

【讨论】:

    【解决方案2】:

    如果您的本地计算机附近没有可靠的 MTA,但需要确保您的邮件能够发送,您可以这样做。例如,如果发生网络中断,但您依靠 Java Mail 发送邮件而没有额外的逻辑,则您的邮件根本不会发送。

    一旦真正的 MTA 再次可用,您就可以使用 JMS 重新安排邮件的传输时间。

    【讨论】:

      【解决方案3】:

      另外:

      1. 与邮件提供商(SMTP 和 POP3)的对话是 异步且接近 JMS/MDB api。那么我为什么要使用 与 JMS 不同的 API?
      2. 您可以将邮件处理保持在一个事务中,以及一些数据库更改其他活动。我记得太多 Spring .. sic 项目,客户要求原子操作,其中包括数据库中的状态更改;-)
      3. 图像,您发送的消息变得更加强制性,您必须连接到 X400 服务。只需考虑细微的代码更改(以及 RA 的更改),您就会发现遇到了正确的架构决策。

      【讨论】:

        猜你喜欢
        • 2016-08-29
        • 1970-01-01
        • 1970-01-01
        • 2012-12-11
        • 2012-06-12
        • 2014-03-24
        • 1970-01-01
        • 2014-12-15
        • 2015-06-30
        相关资源
        最近更新 更多