这里的问题是这样的事情是否已经存在,或者,如果没有,是否有比我在下面描述的更好的方法来实现它。
我需要允许任意主体(用户、组、站点管理员)将Event Sink
s(如电子邮件地址、Webhook URL 等)添加到系统(通过 Web 界面),并为每个主体指定<Event Source, Event Type>
应该是哪种类型发送给它。由于我正在为ReviewBoard执行此操作,因此我将给出一个带有假设实现的具体示例:
- John 创建了一个新的(一个 webhook),由;
event_sink
标识。postbin1
- John 指定将在s 上
postbin1
接收类型的事件(类级别-未指定);publish
ReviewRequest
subscription
source_id
- 当一个新
review_request
的被创建时, , 列出所有对 s感兴趣的Event Manager
(通过 JOIN )并创建一个(实例级)将它们作为监听器绑定到他们感兴趣的特定(django 信号的名称)和特定的;subscriptions
event_sinks
ReviewRequest
subscription
event_type
review_request
- 当它
review_request
被发布时,Event Manager
(谁监听publish
信号)列出所有event_sinks
对该review_request
实例和publish
信号感兴趣的人,并将信号参数分派给他们的sink
方法。 - Webhook 会根据需要
event_sink
编组数据并将其发布到其 URL。
这是我想到的架构: alt text http://bayimg.com/image/aadgoaacd.jpg
我将自己开始实施这个,但我只是想确保我没有重新发明轮子。在谷歌上找不到任何东西。欢迎使用现成的包名称、对我有帮助的中途包名称和/或对我的 DIY 方法的批评。