rabbitmq是是什么
rabbitmq可以简单的理解为一个消息代理,主要的功能是接收消息和转发消息。在整个的消息模型当中,消息发送方理解为生产者,消息接收方理解为消费者。
简单的工作模型
单一的生产和单一的消费
发送方
- 创建与server连接
- 基于连接创建信道
- 基于信道声明队列
- 基于信道发送消息
接收方
- 创建与server连接
- 基于连接创建信道
- 基于信道声明队列(队列存在的话可以省略)
- 基于信道消费消息
资源密集型任务工作模型
消费逻资源占用大,耗时久。这是可以采用消息模型实现异步处理。可以配置多个消费者来提升消费效率
发布订阅工作模型
这种工作模式依赖于fanout类型的exchange,实际上rabbitmq完整的消息模型是: 生产者,交换机,队列,消费者。先前的两种工作模型之所以没有提到交换机是因为采用的是默认交换机,同时也可以采用自定义的交换机。
灵活的路由工作模型
颗粒度更细的控制消息的消费,通过设置交换机的类型,可以将交换机的消息分配到不同的队列。通过routingkey可以区分消息该如何分配,在routingkey进行分类分配消息,依赖于topic类型的交换机
RPC工作模式
rpc是远程过程调用,基于rabbitmq的rpc核心关键点是消息设置的回调队列。工作流程是生产者生产消息,消息设置replyto(回调队列),消费者消费结束,将结果发送到回调队列,生产者消费回调队列。回调队列实现了return的概念。
发送方的确认机制
发布方的消息确认是保证消息可靠的到达服务器(broker),broker会异步发送ack消息给发送方。发布方可以 单个消息确认,批量消息确认,异步监听确认消息。