14

我被要求在 Cloud Java 应用程序中实现通知系统。前提是管理员或应用程序的组件可以向单个用户发送特定消息,或向所有用户广播公告。

通知将按严重性、类型(中断、新服务等)和相应的组件进行分类。

用户将能够选择他们感兴趣的类型和组件,以及他们希望如何接收这些通知(通过电子邮件、仅显示在仪表板上、SMS 等)。用户可以确认或删除通知,因此他们不会再为该用户显示。

虽然我确信从头开始实现这会很有趣,但感觉应该有一个现有的系统、Apache 项目、商业项目等可以做到这一点,并且可以避免我不得不重新发明轮子。

我的问题是:谁能推荐一个可以集成到现有应用程序中并自动处理所有后端内容的通知跟踪框架?商业或开源都可以,只要许可条款对商业友好(请不要使用 GPL 或 LGPL)。

4

2 回答 2

17

我猜您正在寻找类似于Amazon Simple Notification Service (SNS)的东西。但首先让我们把一些事情弄清楚:

  • 您正在尝试发送电子邮件/短信 - 两者都需要Infrastructure,而不仅仅是框架/库。我猜您的客户端(或任何客户端)会在某处运行电子邮件服务器,因此您不会产生直接的成本影响。但是发送 SMS确实会产生基础设施开销。
  • 你不会有一个开箱即用的解决方案。由于您将拥有额外的基础架构,因此您最终将至少编写与此基础架构的良好集成。

牢记所有这些,以下是按难度顺序列出的选项:

  • 使用 Amazon SNS
  • 使用Cloud Message Bus (CMB) - Amazon SNS 的开源克隆。它具有与 Amazon SNS 相同的 API 格式,因此您可以像使用 Amazon SNS 一样使用它
  • 使用Apache Camel及其各种电子邮件/短信组件。Apache Camel 是一个企业路由框架。它有一个消息队列,开发人员可以将消息推送到其中,然后它有各种路由器来接收这些消息并将它们发送到其他地方。它具有开箱即用的发送电子邮件/短信的路由器。您将首先创建一个发布消息的主题。然后,当用户注册电子邮件通知时,您将添加一个电子邮件端点为他/她。当他们选择退出电子邮件时,您将删除该端点。基本上它非常接近于设计您自己的解决方案——除了您不必编写用于发送 SMS/Email 的代码外,它具有开箱即用的组件,您只需编写集成代码即可添加这些用户订阅通知时的端点。
  • 自己滚。您的解决方案最终将与 Apache Camel 方法非常相似。您将拥有一个消息队列,您将拥有主题和侦听器。除非您将编写自己的代码来发送所有电子邮件/短信。

编辑:小的澄清

于 2013-06-04T18:14:38.540 回答
1

看起来您的要求是基于浏览器的 Web 应用程序中的某种实时数据。如果这是正确的,那么一些 HTML 5 api 已经取得了长足的进步,特别是 Web 套接字。

Websockets 是 HTTP 协议的扩展,允许客户端和服务器之间的双通道通信。然而,有一个缺点。信不信由你,浏览器支持仍然非常稀缺,并且在野外使用 http 代理也会出现一些复杂情况。

通常,为了避免缺乏被广泛接受的支持,已经出现了相当多的 javascript/服务器端框架,它们看起来非常有前途。当不支持 websocket 时,这些框架通常会处理后备支持。一些后备技术包括服务器发送事件、jsonp、长轮询、短轮询等。

想到了 2 个优秀的开源项目:

1)。气氛:https ://github.com/Atmosphere/atmosphere

2)。套接字-io - http://socket.io/

于 2013-06-04T16:15:54.160 回答