【发布时间】:2019-09-18 12:44:11
【问题描述】:
考虑这个简单的例子。假设您有一个带有 ff 的事件表 TBL_EVENTS。列:
- eventId (int)
- dateTime(日期时间)
- 事件名称(字符串)
- 数据(json)
现在是ff。事件发生:
$UserService->registerUser();
USER_REGISTERED 事件现在与 ff 一起存储在 TBL_EVENTS 中。数据:
eventId: 1
dateTime: 2019-04-30 00:00:00
eventName: USER_REGISTERED
data: {"userId":1, "name":"foo"}
第一个问题:事件侦听器是否每 x 秒直接查询/侦听 TBL_EVENTS,或者是否需要消息队列以不使用轮询请求“轰炸”TBL_EVENTS?
例如,除了TBL_EVENTS,$UserService->registerUser(); 是否在单独的消息队列中推送“事件”(例如,AWS SQS),然后,$UserService->listener(); 轮询SQS 而不是TBL_EVENTS?或者,在实际应用中使用直接轮询TBL_EVENTS?
第二个问题:当$UserService->listener(); 获得USER_REGISTERED 事件时,它是只为单独的TBL_USERS 表创建一个新用户还是重播从0 到的所有事件现在,从而每次都在TBL_USERS 中创建所有用户?
【问题讨论】:
-
您始终可以使用某些数据库(如 PostgreSQL)的本机监听/通知功能。久经考验、可靠且高效。
标签: architecture message-queue event-sourcing event-driven