우리는 계층화 된 아키텍처에 대해 이야기하고 있습니다. 이벤트가 MessageService.create
함수 내부에 있어야합니까? 아니면 핸들러에서 직접 처리해야하는 것이 일반적입니까? EventDispatcher
은 푸시 알림, 이메일 등을 대기열을 통해 전송합니다.NodeJS의 계층화 된 아키텍처
어떤 사람들은 발사 (도메인) 이벤트가 서비스 계층 내부에 있어야한다고 주장합니다. 그러나 도메인 이벤트에는 항상 인증 된 사용자와 같은 정보가 있어야합니다. 따라서 내 MessageService
내부에서 이벤트를 발생 시키려면 인증 된 사용자를 전달해야합니다. 이는 다소 과잉이라고 생각합니다.
이 단점은 이제 처리기가 HTTP에 결합되어 있으므로 노드 스크립트 등을 통해 메시지 일괄 처리를 만들 때 서비스의 일부가 아니기 때문에 message.created
이 트리거되지 않습니다. 논리.
module.exports = async function createMessageHandler(request, reply) {
request.log(['message', 'create']);
const message = await MessageService.create(request.payload);
EventDispatcher.emit('message.created', {
message: message,
actor: request.auth.credentials,
});
return reply({ data: message });
}
'도메인 이벤트는 항상 인증 된 사용자와 같은 정보를 포함해야합니다. '- 왜? 일반적으로 또는 귀하의 맥락에서 의미합니까? – guillaume31