我想实现一个 Verticle,它可以通过事件总线以长时间运行的流响应请求。查看事件总线,支持请求/响应和发布/订阅模式——我想将它们组合成一种请求/订阅模式。
有了请求/响应,你会做这样的事情:
eventbus.request("address", myRequest).onSuccess(msg -> processResponse(msg)); //single response
我想要的是这样的:
eventbus.request("address", myRequest).handle(msg -> processNewResponse(msg)); // many responses over time
我不确定实现此目标的最佳方法是什么。一种可能的方法,我过去做过,当然可行但有点麻烦,是采用两阶段方法,您可以使用请求/响应设置临时流地址,然后订阅该地址,如下所示:
eventbus.request("address", myRequest)
.onSuccess(msg -> eventbus.consumer(msg.body().getTempStreamAddress(), msg2 -> processNewResponse(msg2)))
但这意味着处理创建临时地址和管理 Verticle 上的订阅,我很乐意这样做,但前提是那是最好的选择,但我想知道我是否在这里遗漏了一个简单的技巧