我最近一直在尝试使用CQRS模式,在很多文档中,人们看到人们使用队列从应用程序向命令处理程序发送命令。
我感兴趣的一件事是人们发送命令的格式是什么?我可以看到JSON是一种很好的表示格式,但是如何管理传入命令的版本控制呢?
我假设有一些东西需要从命令队列中读取,反序列化命令的参数,然后通过CommandHandler实现执行它们。
答案 0 :(得分:1)
这是一个很好的问题。在考虑版本控制时需要考虑一些事项。我喜欢遵循一系列原则:
但是,您可能只需退休或完全不同的表格。在这种情况下,我喜欢使用post fix。例如_V2
要记住的关键是将命令的内容保持为简单类型。当你想要复杂的类型时,可能会有特殊情况,但我会尽量避免这种情况。
从长远来看,改变命令不是一个问题(除非你记录你的命令),而不是改变/版本化事件。
如果它有用,我会在版本控制事件上发布一篇博文,而不会破坏您的事件流。你可以找到它:here
希望它有所帮助!