cp-ddd-framework
cp-ddd-framework copied to clipboard
MQ异步处理后,业务逻辑割裂,代码可读性降低
是否可以在DDDplus里解决它?
复杂业务场景下,经常会使用MQ进行异步的处理。 自己发,自己收的情况很常见。
但业务逻辑被切断了:正在处理一个业务,然后就produce一个message;后面的逻辑会在message consumer处看到,可consumer在哪里?需要找配置文件或其他手段才能找到。
异步方式将本来紧凑的代码都分成两部分:上半场(produce message之前的逻辑),下半场(message consumer里面的逻辑)
有点数据血缘的味道。
需要研发同学,可以在produce message(上半场)处不必切换快速定位下半场业务逻辑的实现。
References
Continuation Passing Style,在FP里很容易搞,但在Java里需要设计一下
场景的复杂性:
- topic可能不确定
- 发送时,可能有if条件,不同条件发送到不同队列
- 但message schema一定是确定的,它代表的的业务语义
- producer和consumer可能位于不同的应用
- 但前提是都是同一个业务域,否则也没有必要关心:MQ本身就是解耦生产和消费的