rabbitmq六种模式

一、简单模式:一个生产者,一个消费者

在这里插入图片描述

@GetMapping("/sendMessage")
public void sendMessage() {
	//没有交换机,两个参数为routingKey和消息内容
    rabbitTemplate.convertAndSend("test1_Queue","haha");
}

二、工作队列模式:一个生产者,多个消费者,消费者之间负载均衡

在这里插入图片描述

@GetMapping("/sendMessage")
public void sendMessage() {
	//没有交换机,两个参数为routingKey和消息内容
    rabbitTemplate.convertAndSend("test1_Queue","haha");
}

三、发布订阅模式:生产者把消息给交换机,交换机把消息推送给与它绑定的所有队列,消费者监听自己的队列

在这里插入图片描述

该模式下,队列和交换机之间的绑定无需routingKey。因为无需routingKey,所以不需要进行字符串匹配,效率最高

@GetMapping("/sendMessage")
public void sendMessage() {
    rabbitTemplate.convertAndSend("fanout_Exchange","","lala");
}

四、路由模式:交换机与队列由routing key绑定,生产者发送消息时指定交换机和routing key,则对应的队列便会收到消息

在这里插入图片描述

因为需要进行字符串匹配,所以效率其次

@GetMapping("/sendMessage")
public void sendMessage() {
    rabbitTemplate.convertAndSend("direct_Exchange","test1_Queue","lala");
}

五、主题模式(通配符模式):交换机与队列由routing key绑定,但routing key由通配符和具体的字符组成,生产者输入具体的字符,交换机根据routing key的规则模糊匹配到对应的队列,则对应的队列会收到消息

在这里插入图片描述
*代表多个单词,#代表一个单词

因为需要进行字符串模糊匹配,所以效率最低

/**
 * 交换机与队列绑定
 * @return
 */
@Bean
Binding truckHistoryBinding(){
    return BindingBuilder.bind(test1Queue()).to(topicExchange()).with("*.test1.*");
}


@GetMapping("/sendMessage")
public void sendMessage() {
    rabbitTemplate.convertAndSend("topic_Exchange","aa.test1.cc","lala");
}

六、rpc模式:

严格意义上来讲,不属于mq范畴,不做讨论

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一梦无痕bzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值