这里的问题是这样的事情是否已经存在,或者如果没有,是否有比我下面描述的更好的方法来实现它。
我需要允许任意Principal(用户,组,站点管理员)将Event Sink
(如电子邮件地址,Webhook URL等)添加到系统(通过Web界面)并且,对于每一个,指定应向其发送哪种<Event Source, Event Type>
。因为我是为ReviewBoard做的,所以我将给出一个假设实现的具体例子:
event_sink
(a
webhook),由postbin1
; postbin1
将在publish
上收到ReviewRequest
类型的事件(班级subscription
- source_id
未指定); review_request
后,Event Manager
列出(通过与subscriptions
的加入)对event_sinks
感兴趣的所有ReviewRequest
并创建(实例级别)subscription
将它们绑定为对特定event_type
感兴趣的特定review_request
(django信号的名称)和的特定review_request
; Event Manager
发布后,publish
(听取event_sinks
信号的人)会列出对该review_request
个实例感兴趣的所有publish
和{ {1}}发信号并将信号参数调度到sink
方法。event_sink
会对数据进行整理,但请将其发送到其网址。这是我想到的架构: alt text http://bayimg.com/image/aadgoaacd.jpg
我即将开始自己实施,但我只是想确保我不会重新发明轮子。在Google上找不到任何内容。随时可以使用包装名称,帮助我的中途包装名称和/或批评我的DIY方法。
答案 0 :(得分:1)
我曾经构建something very similar,但是作为一个小型的REST应用程序(在TurboGears中)。
从来没有把性能和可靠性提升到可以用于任何严重事情的地方。它是在webhooks开始生根之前设计的,所以我现在可能会考虑到这一点。
由于我现在也在Django工作,我很想知道你的想法。我认为你的设计是正确的,这种事件调度员非常有用,值得一试。
答案 1 :(得分:1)
django-notification为你带来了很多好处。我很乐意看到这个应用程序成熟,如果你愿意在代码库中工作那就太棒了。
答案 2 :(得分:1)
这不是pub / sub的案例吗?也许像that