归档:Hermes 子系统
| 本文正在考虑删除! 理由 openSUSE 已经不再使用 Hermes,开发已于 2013 年停止。 请勿清空、合并或移动本文,或删除此通知。请参阅本文的页面和我们的删除策略以获取更多信息。 |
Hermes 子系统
Hermes 系统由不同的子系统组成。本章将简要介绍它们。
- herminator(API,由例如构建服务通知以发送消息)
- 生成器(从 herminator 收到的通知中创建消息)
- 工作器(以邮件或 RSS 或其他方式发送消息)
- 星舰(一个 Web 应用程序,用于在接收者级别配置以何种方式接收哪些消息)
- baselibs(嗯,基础库)
- 数据库(所有子系统的共享存储)
Herminator
目录herminator
Herminator 是 Hermes 服务器,提供 HTTP 接口以通知或发送消息。Herminator 使用 Perl 编写,并使用 CGI::Application 框架来实现 HTTP 服务器。建议使用 Apache 作为 HTTP 服务器来支持 Herminator。
请注意,在当前阶段,Herminator *不应* 对互联网开放,因为这将是一个完美的垃圾邮件平台:发布消息和通知目前不受限制。当然可以通过 Apache 的基本身份验证来保护它。
Herminator 附带一个基本的管理界面,可以显示最新发布的的消息,更重要的是,提供有关 HTTP 接口的信息。
生成器 (The Generator)
文件名hermesgenerator.pl
生成器从传入的通知中创建实际的消息。由于此过程可能需要一些时间来创建通知所需的数据,因此它与工作器和 herminator 分离。这导致了一种设置,其中 herminator 仅以原始格式将通知存储到数据库中。herminator 仅写入通知类型以及相应的参数及其值。这种设置*速度快*并且不增加依赖项。
生成器然后遍历数据库,找到 herminator 添加的新原始通知。生成器需要找出哪些用户有兴趣接收此通知。这取决于随通知一起传递的参数,并且可能需要耗时的操作才能确定。例如,对于构建服务,它需要向另一个 Web 服务发出 HTTP 请求。这可能需要一些时间。最后,如果生成器决定有接收者接收通知,它将在数据库中创建一个实际的消息,该消息由工作器找到。
工作器 (The Worker)
文件名hermesworker.pl
工作器是实际发送消息的脚本。
工作器遍历数据库并组装准备好发送的消息。工作器在控制台中循环运行,不会结束。由于工作器执行实际发送邮件、创建 RSS 等操作,因此工作器需要访问数据库,并且需要一个可以发送邮件等的环境。
星舰 (Starship)
目录starship
星舰 是一个 Ruby on Rails Web 应用程序。其主要目的是使人们能够维护其对某些通知的订阅。星舰还充当 Hermes 消息阅读应用程序。
星舰基于 Ruby on Rails。它还需要访问数据库。
Hermes Baselibs
目录Hermes
Hermes Baselibs 是一组 Perl 模块。它们由 Herminator、工作器和生成器共同使用。希望直接发送消息或通知而不通过 HTTP 的客户端也可以使用它。
数据库 (The Database)
为了存储消息、消息订阅、通知类型等,Hermes 使用数据库。目前,仅支持 mysql。数据库必须可供 Herminator、生成器和工作器访问。这些进程通过数据库进行通信。