首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微服务和消息传递:消息内容

微服务和消息传递:消息内容
EN

Stack Overflow用户
提问于 2016-10-24 10:39:10
回答 3查看 234关注 0票数 0

我正在构建一个由几个微服务组成的应用程序。其中一个名为Hera的微服务管理用户。另一个微服务管理授权和身份验证。这个微服务叫做Zeus,是SpringWeb2.0的一个实现。

在Hera中创建、更新或删除用户时,我希望通过RabbitMQ向Zeus复制某些信息。此信息包括用户名、用户类型(枚举)和指示是否启用用户的标志。

我已经设置了RabbitMQ,一切都很正常。我唯一不确定的是消息正文内容。如何将这些信息打包在消息中?例如,我是否应该创建一个包含POJO的maven项目,其中包含所需的属性,这些属性将通过RabbitMQ进行封送,并在Hera和Zeus中向该项目添加依赖项?还是应该将这些信息添加为普通属性的列表?

我找不到任何关于这个问题的最佳实践或指导方针,所以我问你。

提前谢谢你!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-24 10:44:17

我会为DTO使用公共库,但您需要序列化,这是容忍的,并且允许版本差异,例如句柄、添加/删除字段或数据类型的更改。如果您共享代码,您必须允许代码在每个服务中运行不同的版本,这样在升级一个服务时,您就不会被迫更新其他服务。

票数 1
EN

Stack Overflow用户

发布于 2017-06-02 11:57:46

我认为Hera中的用户对象和Zeus中的用户对象指向相同的身份,但它们是不同的对象,应该根据服务需求在每个服务中实现。

公共库需要重新部署所有依赖它的服务。如果您想在Hera中存储一些附加信息(在新字段中),则必须重新部署Zeus或开始处理不同版本的库(再次引导您找到两个不同的对象)。

票数 0
EN

Stack Overflow用户

发布于 2017-06-03 20:46:32

我建议您这样使用POJO + JSON + GSON

POJO(DTO) ->序列化为JSON (使用GSON) ->通过Message (RabbitMQ) ->将其反序列化(使用GSON) ->获取POJO(DTO)并使用它。

当您使用事件源+ CQRS时,以及当您希望遵守CAP定理并使用而不是ACID (ACID不可能在分布式系统中实现)时,这种方法是常见的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40216362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档