• 本文将教您如何使用 Spring Boot 构建 modulith 并使用 Spring Modulith 项目功能。Modulith 是一种软件架构模式,假设将您的整体应用程序组织成逻辑模块。此类模块应尽可能相互独立。 Modulith 平衡整体
  • Sqids (发音为“squids”)是一个开源库,可让您根据数字生成简短的唯一 ID,类似 YouTube 的 ID。这些 ID 很短,可以从自定义字母表生成,并且保证无冲突。 例如:https://example.com/Lqj8a0
  • 假设我们有一个简单的Holder类,它包装了T类型的值。我们可以这样定义它: icon
  • CRUD(创建读取更新删除)虽然看起来很简单,但在大型系统中,它常常会导致代码混乱、复杂。 创建、读取、更新、删除 (CRUD) 非常常见。一般来说,它只是简单的表单,用于将数据添加到数据库并提供记录列表,您可以深入到特定记录以修改/更新现有记录或可能删除 icon
  • SpringBoot应用程序的事务绑定#发件箱模式 实现,专门基于Kafka、AMQP和JMS的代理。 应用程序模块之间交换的一些事件可能对外部系统感兴趣。Spring Modulith 允许将选定的事件发布到各种消息代理。要使用该支持,您需要执行 icon
  • 用例:下订单。成功下订单后(付款成功并且向餐厅成功下订单后),订单服务会发布一个事件:食品配送合作伙伴服务,用于安排送货人员到达餐厅、挑选食物并将订单配送到用户的地址将积分记入用户帐户的忠诚度服务通知服务通过电子邮件/短信/移动推送 icon
  • 设计松耦合系统需要的不仅仅是精心设计的边界。仔细定义有界上下文之间的交互同样重要。 有界上下文BC是软件架构中与域的一部分对齐保持一致的子系统。它可以作为微服务或单体中的模块来实现。 领域消息流程图是一个 icon
  • 枚举是Java中的一种特殊数据类型,用于表示一组固定的常量。控制器方法可以采用枚举作为参数,Spring MVC会自动翻译将传入请求参数的值设置为适当的枚举常量。 枚举数据类型的示例: icon
  • 是否存在这样的情况:数据库中的记录被插入、更新或删除,但 Debezium 无法从事务日志中捕获该事件并将其传播到下游消费者? 一般来说,Debezium 本身绝不会错过任何事件。如果确实如此,则被认为是一个阻碍性错误,开发团队将优先解决该错误。D icon
  •  本文档讨论了工作流模式,工作流模式提供了一种将长期运行的业务流程建模为步骤序列的方法。本文还描述了工作流如何做出决策但并不实际执行决策,而是将执行委托给系统的其他部分。维护工作流标识对于将事件关联回正确的工作流实例非常重要。确定了实施工作流中的各种挑战,例如处理并发 icon
  • 业务需求场景: 商品应在提交订单时为客户保留。 仅仅将商品添加到购物车并不能保证产品的可用性。 客户不能将已经缺货的产品加入购物车。 事实上,这并不是什么花哨的要求。我曾经做过一个电子商务项目,就有这样的功能。当深入研究领域驱动设计时,我开始思考如何 icon
  • 展示一段示例代码 - Order 类。此类在我们的示例 DDD/CQRS/ES 应用程序中使用。我们正在 icon
  • 领域建模是考虑实体和它们之间的关系?啊,不太好。 虽然这通常是典型的建议的例子,它实际上是落后的。 不要构建数据库模式/结构。 如何对复杂的领域进行建模?在领域驱动设计中,您在领域建模时可能会考虑实体、值对象和聚合。但你如何定义这些呢?我将回顾一下 icon
  • 在事件建模中,以事件的形式保存业务数据。事件是已经发生的事实,我们在每次操作后都会将其存储起来。事件流记录了我们的记录所发生的一切。很遗憾,你不能更改事件,因为它们是不可变的。但你可以在最后添加一个新的事件,弥补过去的错误。 下面6种方法介绍如何从 icon
  • 双时态事件源将数据存储为一系列事件,这些事件告诉数据发生了什么,并且数据有两个关联的时间点,一个是数据进入系统的时间,另一个是数据生效的时间。 这篇文章讲述了我们 8 年多的双时态事件溯源经验,以及展示如何实现这一目标的代码示例。 icon
  • 使用 事件溯源EventSourcing 的感觉非常棒。系统中有发生的事件的历史记录。这使得调试变得更加容易。 然而,事件溯源并不能保护我们免受用户犯错误的影响。 我们应该如何处理用户输入错误的情况呢?< icon
  • 我们可以完全实现一个运算,而不需要查看任何组合运算的具体实现。就像你在数学中操作代数表达式一样。 假设将generateTrades作为领域服务 TradingService 的一部分。其目的是生成当天发生的所有交易(操作的输入),并由用户(操作的 icon
  • 一家非常大的物流公司聘请了一家咨询公司来建立一个网上商店来购买该物流公司的产品。该系统的核心是一个使用通用订单框架构建的专有订单引擎。我们检查了系统并发现以下行为: 一切都是命令。如果您想更改地址、购买商品或更改信用卡信息,则可以使用 Order 类并对其进行配置。该框架通过解析元信 icon