当前位置: 首页 > 知识库问答 >
问题:

返回响应或错误的Reactor Eventbus示例

姬庆
2023-03-14

首先,我对非同步处理领域还很陌生。在我当前的项目中,我们使用SpringBoot和ProjectReactor,特别是Eventbus,来执行一些异步处理。我想使用eventbus也会使我们的系统更具可扩展性。

到目前为止,EventBus的使用还相当有限,我们在EventBus使用者中进行一些处理,而该使用者不返回任何内容。配置和示例处理器如下所示:

//配置文件

@SpringBootApplication
public class Application implements CommandLineRunner {

@Autowired
private EventBus eventBus;

@Autowired
private BatchProcessor batchProcessor;

@Override
public void run(String... arg0) throws Exception {
    eventBus.on("batchProcessor", batchProcessor);

}
}

//消费者

@Service
public class BatchProcesspr implements Consumer<Event<Request>> {

@Override
    public void accept(Event<Request> event) {
      // processing goes here
 }

到目前为止,对于具有无效返回类型的接受方法来说,这是可以接受的。但是,现在我有一个场景,我想从处理器方法返回一个响应,或者如果在处理过程中发生错误,需要抛出一个适当的异常,在这两种情况下,响应/异常需要返回到调用点。

这可以用Reactor来完成吗?如果是,请提供一个简单的例子。我读过Promise,但找不到类似的例子。

共有1个答案

楚举
2023-03-14

你试过发送和接收吗?http://projectreactor.io/ext/docs/reference/#bus-请求答复

EventBus bus;

bus.receive($("job.sink"), (Event<String> ev) -> {
  return ev.getData().toUpperCase();
}); 

bus.sendAndReceive(
   "job.sink",
   Event.wrap("Hello World!"),
   s -> System.out.printf("Got %s on thread %s%n", s, Thread.currentThread())
); 

您可以轻松地在呼叫者端注册另一个消费者,当服务响应时会收到通知。

 类似资料:
  • 我对Wiremock很陌生,尽管我已经看过了文档,但我仍然没有完全了解它 我想知道的是。。。 有没有办法在一个存根中定义两种行为——成功响应案例和错误响应(或多个)案例,以防例如请求的正文匹配模式不满足?支持吗?或者我应该为每种类型的无效请求(例如请求正文)编写单独的请求匹配器?当然是以更通用的方式。 如果可以在同一个存根JSON中组合错误响应和成功响应,请给我举个例子,或者也给我举一个例子?

  • 问题内容: 我通过jQuery AJAX将一些数据发布到PHP脚本中,并且一切正常执行,但是返回了404错误。在我的Firebug控制台中,PHP脚本的响应是正确的。我不了解该脚本如何响应,它仍然会引发404错误。jQuery的“错误”回调方法将触发,而“成功”方法则不会触发。 PHP脚本执行的所有语句都能正常工作,因为我可以看到数据库正在更新等。 我在Dreamhost托管的WordPress

  • 各位议员好。 背景信息:这是一个基于Spring Boot的项目,它使用JAX-RS/Jersey作为RESTHTTP服务器,而不是spring rest。 错误说明和问题: 将一个文件从一台服务器发送到另一台服务器,并收到响应。(很简单吧?)从功能上讲,下面的代码正在运行。但是,发送方得到的不是200响应,而是500个内部服务器错误和以下堆栈跟踪。 调试之后,我注意到响应中包含了receiver

  • 我正在制作一个简单的Rest服务,它必须将JSON请求中的数据添加到数据库(MongoDB)中。当我向服务发出请求时出现问题,服务器会出现以下错误: Controller@0.0.0start C:\users\Fernando\Google Drive\tcc_Fernando_Felipe\Controller\Controller节点./bin/www {[Error:找不到模块“../bu

  • 如何从HandleFunc调用多个错误返回函数? 我在这个链接中找到了类似于我需要的东西:Golang:终止或中止HTTP请求。 附注:我还读过以下博客帖子:http://blog.golang.org/error-handling-and-go 那里有一个部分叫做“简化重复性错误处理”--这很酷,但我需要简化多个重复性错误处理,我不知道怎么做。

  • 问题内容: 我正在寻找一种方法来返回我在loopJ AsyncHttpClient onFinish或onSuccess或onFailure中得到的响应。截至目前,我有这段代码: 当我调用代码时: 在onSuccess或onFailure方法完成http发布之前,我得到了 JSONException 。 我注意到,在第一次调用时:Log.e(“ Exception”,“ JSONException