RabbitMQ浅谈

1.消息中间件有什么作用?以及缺点?

1.异步处理,比方说登录完成之后给用户邮件或短信通知
2.流量削峰,秒杀活动
3.应用的解耦
4.消息的通信
缺点:系统的复杂度提升了,可用性降低了。

2.如何避免消息的重复投递或重复消费?

a.消息的重复消费:当消息被消费者处理完毕但是没有消息的应答,消费者断开了连接,这个时候消息就会被重新投递。解决办法:消息处理完毕之后,将消息的唯一ID存到redis中,消费者每次消费消息的时候去查询是否被消费。
b.消息的重复投递:处理办法同消息的重复消费

3.如何保证消息的可靠性传输?(如何避免消息的丢失)

1.生产者的丢失 原因:网络或消息无法路由消息丢失 解决办法:事务或者发送方确认模式,但是事务是同步的,效率低,一般采用发送方确认模式异步处理。消息成功会ack,丢失会nack。
2.消息队列的丢失 原因:比方说服务器突然断电,内存中的消息丢失 解决办法:消息的持久化,包括交换器和队列的持久化
3.消费者的丢失 原因:消息的应答采用自动确认,发生重启或断电异常消息丢失, 解决办法:消息的应答采用自行手动确认。

4.如何保证消息的有序性?

一个队列对应多个消费者,每个消费者处理消息的速度不一样,有可能造成数据的不一致。
解决办法:一个队列对应一个消费者,消费者采用单线程处理。

5.vhost有什么作用?

vhost可以理解为一个小型的rabbitmq服务,用来将不同的应用隔开,避免交换机、路由键、队列重复。

6.RabbitMQ的一些基本概念?

1.AMQP:高级消息队列协议
2.信道:生产者、消费者、服务器三者之间通信的渠道。信道是建立在TCP连接上的虚拟连接,TCP上有很多信道,一个信道对应一个线程,信道在rabbitmq上有唯一ID。
3.交换器、路由键、队列:队列通过路由键绑定到交换器,生产者发布的消息到交换器通过路由键路由到队列。
(一个队列可以绑定多个路由键、一个队列可以对应多个消费者、TCP连接上可以有多个信道)
4.消息到达交换器没有可路由的队列?消息会丢失
5.队列上无消费者或者是多个消费者?无消费者消息会一直等待;多个消费者会以循环的方式,每个消息只会发给一个消费者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值