Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该如何使用异步通信实现GET端点?_Java_Spring_Rabbitmq_Microservices - Fatal编程技术网

Java 我应该如何使用异步通信实现GET端点?

Java 我应该如何使用异步通信实现GET端点?,java,spring,rabbitmq,microservices,Java,Spring,Rabbitmq,Microservices,我正在使用RabbitMQ和Spring构建后端。使用我的MessageBroker(rabbitMQ),我的POST、更新和删除端点可以正常工作。 但是,我不知道如何使用MessageBroker实现GET端点。是否有任何方法可以使用异步通信为前端检索数据库信息 编辑:我找到了解决方案。如果要在microservice Y上使用数据,则应从microservice X克隆数据。此外,如果在X上更改数据,则每次都必须更新该数据并将其发送给Y 微软有一些关于微服务的好东西,它对我帮助很大:这里的问

我正在使用RabbitMQ和Spring构建后端。使用我的MessageBroker(rabbitMQ),我的POST、更新和删除端点可以正常工作。 但是,我不知道如何使用MessageBroker实现GET端点。是否有任何方法可以使用异步通信为前端检索数据库信息

编辑:我找到了解决方案。如果要在microservice Y上使用数据,则应从microservice X克隆数据。此外,如果在X上更改数据,则每次都必须更新该数据并将其发送给Y


微软有一些关于微服务的好东西,它对我帮助很大:

这里的问题是,您使用的是一个请求-响应协议(http),它意味着与异步后端技术的同步通信

问题如下:对于http,您使用服务器线程池的线程来执行请求并返回响应,但由于您使用的是消息代理,因此处理请求的线程与接收响应的线程不同

有两种可能的解决方案,如果您想继续使用异步通信来处理查询(GET),您必须使用一些不使用请求-响应模型(如SSE或WebSocket)的协议。Spring可以处理SSe,并在控制器中返回通量或单声道


另一个选项是使其同步,并对数据库进行查询调用,以获得阻塞线程的结果,直到您获得数据为止

如果使用postman,如果您键入请求的URL以及CRUD操作的类型,您可以获得它的代码。只是好奇,您是否有任何理由需要“get”端点是异步的,以及为什么它应该通过MessageBroker?如果前端需要API响应,那么应该是直接同步调用后端API并将响应发送回前端?是的,@DinakaranSankaranarayan。我正在学习异步通信,在试图理解如何使用微服务通信使所有端点完全异步时遇到了很多困难。好吧,我想我不应该用它来获取。但是,如果我不这样做,那么我将有耦合的中间服务,不是吗?如果我想在我的微服务之间进行完全异步的通信,以响应式编程为目标,我应该如何在中间共享数据,而不是如果我不能使用http GET(当然,由于http的同步性质)?这是我最大的怀疑。