需要通知/仪表板系统的框架?[已关闭]

2022-09-04 02:27:21

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

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

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

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

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


答案 1

我想你正在寻找的是类似于亚马逊简单通知服务(SNS)的东西。但首先让我们把一些事情弄清楚:

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

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

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

编辑:小的澄清


答案 2

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

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

通常,为了规避缺乏广泛接受的支持,已经出现了相当多的javascript /服务器端框架,这些框架似乎真的很有前途。这些框架通常在不支持 websocket 时负责回退支持。一些回退技术包括服务器发送的事件,jsonp,长轮询,短轮询等。

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

1).阿特莫什费雷:https://github.com/Atmosphere/atmosphere

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