java - 微服务和消息传递 : Message Content

标签 java spring rabbitmq microservices

我正在构建一个由多个微服务组成的应用程序。其中一个名为 Hera 的微服务负责管理用户。另一个微服务管理授权和身份验证。该微服务称为 Zeus,是 Spring OAuth 2.0 的实现。

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

我已经设置了 RabbitMQ 并且一切正常。我唯一不确定的是消息正文内容。这些信息应该如何打包在消息中?例如,我是否应该创建一个包含具有所需属性的 POJO 的 Maven 项目,该项目将被编码并通过 RabbitMQ 发送,并在 Hera 和 Zeus 中添加对此项目的依赖项?或者我应该将此信息添加为普通属性列表?

我找不到关于此主题的任何最佳实践或指南,所以我向您询问。

提前谢谢您!

最佳答案

我会使用 DTO 的通用库,但您需要具有容忍性并允许版本差异的序列化,例如处理添加/删除的字段或数据类型的更改。如果您共享代码,则必须允许代码在每个服务中运行不同的版本,这样当您升级一项服务时,就不会被迫更新任何其他服务。

关于java - 微服务和消息传递 : Message Content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40216362/

相关文章:

java - Spring Data JPA 查询 + 交叉表

java - Spring - 如何在单个资源上应用投影?

rabbitmq - @RabbitListener 未从队列接收消息

ninject - 为从 ASP.NET MVC 和工作应用程序使用 RabbitMQ 设计一个好的界面

heroku - Celery在RabbitMQ上创建多个队列——非默认队列没有消费者

java - 在范围报告中添加测试用例失败原因

java - 来自tomcat6 webservice服务器的 Axis 异常

java - 我的事务 xml 到 java 配置的转换是否正确?

java - 检查元素是否验证条件

java - 如何从第二个位置删除线性布局子项?