Spring Cloud Stream 如何用函数式的方法处理下游返回的消息?

2022-12-29 12:30:24 +08:00
 VeryZero

类似于这种

     event.publish(sendMessage).onResult(resultMessage -> {
            //todo
        });

具体需求是先发送一条消息给下游,下游处理完成后再返回一条消息回来告知处理结果。

原来的做法是定义一堆 @Output @Input @StreamListener

分散在各处,代码可读性很差。不知道有没有函数式的办法可以让两者关联起来

911 次点击
所在节点    程序员
2 条回复
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
lmshl
2022-12-30 13:01:12 +08:00
Promise 模式
任务开始时创建 Promise 和标识句柄,收到来自下游的任务结束,根据句柄找到 Promise 并标记为 Resolve/Completed
这样业务里看到 Promise 状态变更时,自动进入 then 逻辑继续后面的处理

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/905328

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX