RabbitMQ面试总结

1先上官网的介绍

RabbitMQ is the most widely deployed open source message broker.

RabbitMQ是部署最广的开源消息中间件

With tens of thousands of users, RabbitMQ is one of the most popular open source message brokers. From T-Mobile to Runtastic, RabbitMQ is used worldwide at small startups and large enterprises.

数万用户,RabbitMQ是最受欢迎的开源消息中间件,从T-Mobile(北美移动电信运营商)到Runtastic(一个计步软件,类似keeper),RabbitMQ 在全球范围内用于小型初创公司和大型企业。

RabbitMQ is lightweight and easy to deploy on premises and in the cloud. It supports multiple messaging protocols. RabbitMQ can be deployed in distributed and federated configurations to meet high-scale, high-availability requirements.

RabbitMQ 是轻量级的,易于在本地和云端部署,它支持多种消息传递协议,RabbitMQ 可以部署在分布式和联合配置中,以满足大规模、高可用性的要求。(支持分布式和联合部署哈,重点,我只用过联合部署,就是主主双备模式)

RabbitMQ runs on many operating systems and cloud environments, and provides a wide range of developer tools for most popular languages.

RabbitMQ运行在很多的操作系统和云环境中,并且为绝大多数的流行语言提供很多的开发工具。

2 RabbitMQ一定要了解的概念

完整的调用流程,为了区分功能,将交换机,队列的声明,以及绑定都在mq的可视化界面做。这样生产者和消费者责任比较清晰。一下例子建立在这个概念之上。

2.1消费端

如果我要消费消息,配置好依赖,配置好连接信息。增加一个新的消费方法,只需要队列名字。

RabbitMQ 最重要的概念是,

Queue,消费端的代码是这样的,只需要队列名称就行。这个一定要记住,

@Component
@RabbitListener(queues = "QueueName")//监听的队列名称QueueName
public class DirectReceiver {

    @RabbitHandler
    public void process(String message) {
        System.out.println("消费者收到String类型消息  : " + message);
    }

}

那Exchange,Routing Key,Binding,这几个概念的意义在哪?存在于Producer,这些都是生产端的概念,用来实现将消息花式指定到不同的队列中。这个花式和Exchange的类型直接相关。

2.2生产端

生产端是没有队列概念的,意思就是在java端发送消息的时候,你完全不需要管队列信息。

只能通过exchange 和RoutingKey去分发到队列是不能直接操作队列的。一切从Exchange开始。

2.3Exchange交换器的类型:

direct 直连,RoutingKey和bindingKey相等则发送。

fanout 不需要RoutingKey这一套直接推送到绑定队列。

topic 是花式重点 

headers 不依赖于路由键进行匹配,是根据发送消息内容中的headers属性进行匹配,除此之外 headers 交换器和 direct 交换器完全一致,但性能差很多,目前几乎用不到了

2.4一次完整的的配置,生产消费流程是怎么样的

在mq的可视化界面,配置Queue,Exchange,由于Queue和Exchange分属于消费端和生产端。所以需要一个中间的绑定关系,就像sql中的主外键一样。

在生产者中是RoutingKey伴随消息一起发送过来。怎么关联到Queue呢?这就引入绑定概念。

Binding:绑定,通过绑定将交换器和队列关联起来,一般会指定一个BindingKey,通过BindingKey,交换器就知道将消息路由给哪个队列了。

Binding操作只需要做一次就好,是可以在可视化界面直接设定的。

由此复盘完整过程就是,RabbitMQ设置Queue,Exchange,以及执行Binding操作设置BindingKey。这些可以理解成静态数据,操作一次就好。

然后生产端发送消息,带上Exchange名,根据exchange类型对应BindingKey的RoutingKey。这时候消息到了Queue。消费者直接通过Queue名去消费。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值