java 之 RabbitMQ 面试题

1.消息队列RabbitMQ的五种形式队列
1.点对点(简单)的队列
2.工作(公平性)队列模式
3.发布订阅模式(fanout)
4.路由模式Routing (公司)
5.通配符模式Topics (*号只可以匹配.后面一个词,#号可以匹配.后面多个词)

2.Virtual Host:
虚拟主机的概念,类似权限控制组,一个Virtual Host里可以有多个Exchange和Queue。

3.什么是RabbitMQ交换机 以及 类型
生产者发送消息不会向传统方式直接将消息投递到队列中,而是先将消息投递到交换机中,在由交换机转发到具体的队列,队列在将消息以推送或者拉取方式给消费者进行消费,这和Nginx有点类似。

交换机有四种类型 分别是
fanout、direct、topic , Headers exchange
Fanout exchange(扇型交换机)将消息路由给绑定到它身上的所有队列
Direct exchange(直连交换机)是根据消息携带的路由键(routing key)将消息投递给对应队列的
Topic exchange(主题交换机)队列通过路由键绑定到交换机上,然后,交换机根据消息里的路由值,将消息路由给一个或多个绑定队列
Headers exchange(头交换机)类似主题交换机,但是头交换机使用多个消息属性来代替路由键建立路由规则。通过判断消息头的值能否与指定的绑定相匹配来确立路由规则。
RabbitMQ如果确保消息一定消费成功了呢?
为了确保消息不会丢失,RabbitMQ支持消息应答。消费者发送一个消息应答,告诉RabbitMQ这个消息已经接收并且处理完毕了。RabbitMQ就可以删除它了。
如果一个消费者挂掉却没有发送应答,RabbitMQ会理解为这个消息没有处理完全,然后交给另一个消费者去重新处理。这样,你就可以确认即使消费者偶尔挂掉也不会丢失任何消息了。

如何确认生产者一定要将数据投递到MQ服务器中?
可以采用MQ消息确认机制,如果消息发送失败 可以重试 重新发送消息 如果重试几次还是失败的话可以转为手动发送 (可以)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值