首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Smallrye消息和反应性http客户端处理NonBlocking?

如何使用Smallrye消息和反应性http客户端处理NonBlocking?
EN

Stack Overflow用户
提问于 2022-06-14 15:59:07
回答 1查看 34关注 0票数 0

我有下面的代码。

代码语言:javascript
复制
@Incoming("my-topic")
void process(String someEvent) {
     String someResponse = assuminglyRealFastReactiveClientCall();
}

上述代码引发阻塞线程异常。这是用@Blocking修正的。

代码语言:javascript
复制
@Incoming("my-topic")
@Blocking
void process(String someEvent) {
     String someResponse = assuminglyRealFastReactiveClientCall();
}

如果我把String assuminglyRealFastReactiveClientCall()切换到Uni<String> assuminglyRealFastReactiveClientCall()

我猜消费者方法必须切换到手动的ack策略,并且消息需要根据订阅的结果进行加/加,所以呢?

代码语言:javascript
复制
@Incoming("my-topic")
void process(Message<String> someEvent) {
     assuminglyRealFastReactiveClientCall()
                .subscribe().with(s -> {
                    System.out.println("Response: " + s);
                    event.ack();
                }, t -> event.nack(t));

}
EN

回答 1

Stack Overflow用户

发布于 2022-06-14 17:12:48

代码语言:javascript
复制
    @Incoming("my-topic")
    Uni<Void> process(Message<String> someEvent) {
        return assuminglyRealFastReactiveClientCall()
                .invoke(this::handleResponse)
                .chain(response -> Uni.createFrom().completionStage(someEvent.ack()));

    }

    private void handleResponse(String response) {
        // Do something with the response
    }

Smallrye反应性消息传递文档中的消费信息段落还有更多的示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72620075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档