类似于这种
event.publish(sendMessage).onResult(resultMessage -> {
//todo
});
具体需求是先发送一条消息给下游,下游处理完成后再返回一条消息回来告知处理结果。
原来的做法是定义一堆 @Output @Input @StreamListener
分散在各处,代码可读性很差。不知道有没有函数式的办法可以让两者关联起来
1
mmdsun 2022-12-30 10:12:41 +08:00
消息手动发,看看能不能获取消息提交的 offset ,应该可以做到。或者,可以利用中间件存储一些状态。
这个问题比较相似: https://stackoverflow.com/questions/73006450/is-there-any-way-to-know-if-kafka-message-has-been-confirmed-in-producer |
2
lmshl 2022-12-30 13:01:12 +08:00
Promise 模式
任务开始时创建 Promise 和标识句柄,收到来自下游的任务结束,根据句柄找到 Promise 并标记为 Resolve/Completed 这样业务里看到 Promise 状态变更时,自动进入 then 逻辑继续后面的处理 |