我正在寻找一种方法来连接可能位于多个位置的多个系统上的进程。事件总线或消息队列似乎是实现此目的的理想方法,但我无法找到实现此类功能的现有解决方案。让我举几个例子来说明我正在尝试做什么...
一条消息进入我的电子邮件服务器[电子邮件保护]。我想在运行我的问题管理软件的服务器上启动一项作业,以从该帐户 POP 邮件。
我的团队中有一个成员将内容推送到我们的内部 Git 存储库。我希望我的聊天机器人将此推送通知给 #developers 房间,并让我的构建服务器开始构建。
我的部署系统完成了生产部署。我希望问题管理系统将部署中的所有问题标记为已部署,并让我的聊天机器人通知 #operations 室生产已更新。
我知道我可以编写脚本来直接影响这些更改(我一直在这样做),但我更喜欢解耦的解决方案。每次添加需要知道何时进行推送的新应用程序时,都必须修改我的 Git 接收后挂钩,这对于一个大部分时间都在编写软件的人来说似乎很奇怪。解耦将使维护变得更加容易,我认为没有理由让我的网络的所有组件实际上必须相互了解。我运行 Windows Server 2008 R2 和 CentOS 6.x/7.x 的混合版本,因此跨平台的东西会很好。
理想情况下,我会在每个系统上安装一个守护进程,它监听中央消息队列,并允许我定义作业或脚本来对某些事件做出反应。我还需要某种方式从命令行或脚本将事件注入队列。我对任何能实现解耦的东西都持开放态度。我能想到的唯一解决方案是尝试使用 AMQP 服务器并自己连接一切。
如果类似的东西已经存在而我却没有注意到,我深表歉意。提前感谢您提出的任何建议。