Nats/Jetstream:命令主题的命名约定

par*_*nza 5 command nats.io nats-jetstream

我现在已经在 CQRS/Event 采购项目中与 Nats/Jetstream 合作了一段时间。最近,我发现我没有遵循任何用于命令的主题名称的命名约定(事件几乎被涵盖)。到目前为止所做的事情如下:

myProjectName.internal.pricing
Run Code Online (Sandbox Code Playgroud)

意思是myProjectName我的项目名称,internal因为它是我项目中特定服务的内部,然后最终是该命令执行的操作(例如一些定价逻辑)。有没有我可以使用的广泛使用的命名约定?如果您可以分享我可以用来在我的项目中进行更好命名的任何视图或资源,我将不胜感激。

谢谢

Vla*_*lav 5

有关于它的好文章:

一般建议:

  • separate.with.dots.lowercase- 避免大写。
  • 保持主题简短。建议将主题中的最大标记数量保持在合理的值(最多 16 个标记)。
  • 创建分组结构。点 (.) 分隔和反向域名表示法 (reverse-DNS) 意义上的结构已经得到证明。首选域服务名称(请参阅DDD)。
  • 使用相应的前缀将数据明确标记为“私人”或“公共” - “私人”用于内部主题,“公共” - 用于官方。
public.sales.ecommerce.shoppingcarts
private.risk.portfolio.analysis.loans.csvimport
Run Code Online (Sandbox Code Playgroud)
  • 后缀 by 是提前指示如何使用主题的好方法,例如.avro, .json, .text, .protobuf, .csv, .log
  • 您可以为 JetStream 主题添加前缀:(js.in.orders.>其中.in/.out是入站或出站消息的前缀)。

应该避免什么?

  • 附加版本号 - 更好的方法是将所使用模式的版本号作为标头的一部分添加到相应的记录中。最好使用架构注册表,其中集中存储有关架构、版本控制和兼容性的所有信息。
  • 使用应用程序名称作为主题名称的一部分。
  • 团队名称/分区号或消费者/生产者名称。
  • 命名空间或公司名称 - 您的同事通常知道他们工作的公司的名称
public.com.xeotek.sales.ecommerce.shoppingcarts
Run Code Online (Sandbox Code Playgroud)

关于 Kafka 主题最佳实践的类似问题:命名 Kafka 主题的最佳实践是什么?