如何在SpringAPI项目中设计RabbitMQ实现?

如何在SpringAPI项目中设计RabbitMQ实现?,spring,rabbitmq,Spring,Rabbitmq,这将是一个声明性问题。我知道什么是rabbitMQ,以及为什么它被用于。 我有一个SpringAPI项目,它有许多API端点。 例如,localhost:80/do-A,localhost:80/do-B 现在,我的客户机项目使用这些端点创建具有所需参数的请求。 在我的API项目中,端点看起来像 Map(/do-1) public Customer DoA(Customer customerObject){ return customer } 据我所知,RabbitMQ是API和客户端之间用于

这将是一个声明性问题。我知道什么是rabbitMQ,以及为什么它被用于。 我有一个SpringAPI项目,它有许多API端点。 例如,localhost:80/do-A,localhost:80/do-B 现在,我的客户机项目使用这些端点创建具有所需参数的请求。 在我的API项目中,端点看起来像

Map(/do-1)
public Customer DoA(Customer customerObject){
return customer
}
据我所知,RabbitMQ是API和客户端之间用于存储请求的中间件,API将能够逐个检索每个请求,这种方法确保了稳定性,并且在重载期间不会丢失请求,特别是在事务活动中

如果我实现rabbitMQ,设计将如下所示:

客户端->创建请求>发送到rabbitMQ,监听rabbitMQ API从队列中检索请求,对其进行处理,并将响应发送到队列。
因此,问题是,我需要做什么才能将现有端点转换为兔子实现的端点?rabbit实现后,它们还会存在吗?或者我必须全部更改它们并逐个为它们附加侦听器?

您需要围绕队列设计您的系统,您需要将消息放入任何异步任务执行器(如AMQP或AMQP)中

在基于排队的解决方案中,您可以将与API请求相关的所有有效负载排队,以便您可以处理它们而不会出现任何问题。 对于示例案例,您可以记录如下

class Request{
  String URL;
  Map<String, Object> body; // String
}

如果客户端项目将消息推送到队列,而服务器侦听同一个队列,我认为您不需要API层。这是我试图理解的一个要点。我还需要保留api层吗?如果我实现rabbitNo,您只需要保留服务层。因此,我的消费者将如何知道队列中有请求。我的意思是,我需要连续执行我的consumer方法还是添加一个监听器?如果使用Rqueue,它非常简单,这取决于增加监听器并发性所需的流量。您只需添加几行就可以使用Rqueue使其正常工作。你能定义一下架构吗?我的意思是,客户端->生成请求>发送到兔子队列API->使用队列中的请求,生成密钥,发送到客户端,处理请求,用密钥将响应发送到队列客户端>获取密钥,用密钥监听响应通道这就是设计吗?
+------+                              +---------+
|      | ---> ==Request  Queue=== --> |         |
|Client|                              |Consumer |
|      | <--- ==Response Queue=== <-- |         |
+------+                              +---------+
class Request{
    String id;
    String URL;
    Map<String, Object> body; // String
    // Any other fields
} 
class Response{
 String id;
 String requestId; 
 // Any other fields
}