1、简单模式
消息生产者将消息方式到队列中,消费者监听队列,如果队列中有消息,则取出消费,在消费者取出消息后队列将自动删除该消息。
2、工作模式
消息生产者将消息发送到队列中,一个队列有多个消费者监听,则多个消费者之间存在着竞争关系,消息会会被消费者谁先拿到谁先消费。高并发情况下,会产生某条消息会被多个消费者共同使用,这时可以添加一个开关(syncronize与同步锁)保证每个消息只被一个消费者消费。
3、发布/订阅模式
x表示rabbitmq的内部组件交换机,队列绑定到交换机上,消息发送到交换机中,交换机会将消息分发给所有绑定到交换机的队列中,监听队列的消费者就可以拿走消息消费。
4、路由模式
路由模式是通过指定交换机的路由键来指定消息发往哪个队列。交换机在接受到消息生产者发送的消息之后会根据路由键来进行消息匹配,将消息发往键值匹配的队列中。(有指向性的发送)
5、主题模式
主题模式是路由模式的一种,路由模式是通过路由键来指定消息发送的队列,主题模式的路由规则不单单局限于固定的键值,可以通过自己定义匹配规则,满足规则匹配的消息会发往指定的队列中。
6、RPC模式
RPC模式是在客户端发送请求消息之后服务器接受到请求消息返回响应给客户端的模式。在RabbitMQ中使用回调队列即可实现。当客户端的请求消息发送到消息队列时,我们可以在消息中指定一个回调队列的参数(图中reply_to=amqp.gen-Xa2…即为回调队列信息)以及指定一个关联id,这个id唯一标识请求消息,当请求消息发往消息队列时,服务器从消息队列中取出消息执行任务,服务器通过消息中的reply_to字段中的队列信息将响应发送到回调队列中,客户端在接受到回调队列中的消息之后比较关联id是否与请求中的值匹配,如果匹配则返回响应数据。