Angular 5 和消息总线
Posted
技术标签:
【中文标题】Angular 5 和消息总线【英文标题】:Angular 5 and Message Bus 【发布时间】:2018-07-19 14:24:24 【问题描述】:我有一组 RESTful 服务,我的 Angular 5 客户端使用这些服务来执行应用程序的 CRUD 和业务操作。这些是一组微服务,它们使用发布/订阅消息队列在它们之间进行通信,例如创建用户时,用户服务器会向消息队列发布 UserCreated 事件,订阅者可以监听此事件并根据需要对其进行操作。
现在,这一切都很好,但我想如果 Angular 5 应用程序本身将事件发布到消息队列而不是发出 HTTP POST/PUT 或 DELETE 并且只对 API 发出 GET 请求,那会不会更好?
因此,重复上面的示例,Angular 5 客户端会将CreateUserEvent
发布到消息总线(在我的情况下为云发布/订阅),然后我可以让服务订阅这些事件并对其采取行动。例如,我的 RESTful 服务将只公开 GET /users 和 GET /user/:id。
我知道这是可行的,我猜我描述的是 CQRS,但我很想了解从 UI 将事件发布到消息总线是否是一种好的做法?
【问题讨论】:
对我来说这是一个很好的问题,虽然我对基于云的发布/订阅应用程序很陌生。 【参考方案1】:消息总线的概念与微服务非常不同。可能,您问题的答案在于您从架构的角度看待这两者的方式。
消息总线(无论是特定于后端还是特定于前端)的设计方式是,它服务于在环境的有限边界(即后端或前端)内进行实体通信的目的。
而另一方面,微服务架构的设计方式是,两种不同的环境(可能是后端-前端或后端-后端)可以“有效地”通信。
因此,这两个概念背后的动机有明显的区别。现在,从您的角度来看,您可以使用一种可能有效的混合方法,它还可能导致与性能、架构设计或开销相关的有趣发现。
【讨论】:
【参考方案2】:可以直接从客户端发布,但需要注意的是,这意味着客户端需要拥有正确的凭据才能发布。因此,最好让服务发布以响应客户端发送的请求。
【讨论】:
以上是关于Angular 5 和消息总线的主要内容,如果未能解决你的问题,请参考以下文章