使用Redis实现简单的事件驱动架构 「DDD、事件溯源和一致性哈希」( 三 )


分区工作者持久化该事件,并将其分派给EventHandler 。事件处理程序是一系列可独立部署的函数,可以做任何你想做的事情 。
如:
 
handlers = [PostInsightsGeneratorEventHandler,ThreadActivityManagerEventHandler,SpamDetectionEventHandler,#...,#....,ImageResizerEventHandler,]
而我们的处理器可以以任何你喜欢的方式处理它们 。在这里,我们按顺序处理它们,但它也可以并行派发:
 
 
class EventHandler:@staticmethodasync def process(event_dao: SystemEventDAO, db_session: Session = None):log_info(msg=f'Event: {event_dao.event_name} arrived')for event_handler in handlers:await event_handler.process(event_dao=event_dao, db_session=db_session)return
处理程序本身是一个相当简单的类,它检查相关的事件 。
 
 
class PostInsightsGeneratorEventHandler(event_dao: SystemEventDAO, db_session: Session):if not event_dao.event_name == "PostCreatedEvent" :returnlog_info(msg=f"PostCreatedEventHandler called with {event_dao.event_id}")# Do whatever you need to here



推荐阅读