栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

消息中间件RabbitMQ

消息中间件RabbitMQ

MQ:Message Queue,消息队列

MOM:Message Oriented Middleware,面向消息的中间件

主流实现方式:

JMS:Java Message Service,java消息服务。java规范;只能使用java实现;只有两种消息模型。(ActiveMQ)

AMQP:Advanced Message Queueing Protocol,高级消息队列协议。本质上是协议,只规定了数据格式;任何语言都可以实现;可以有任意多种消息模型。(RabbitMQ)

三个主要作用:
1.异步
2.解耦
3.削峰填谷

主流产品:
1.ActiveMQ:Apache,基于JMSjava
2.RabbitMQ:独立社区(spring) 基于AMQP实现 ,用erlang语言实现(erlang面向并发的编程语言)
3.RocketMQ:阿里开源 贡献给apache
4.Kafka:Apache 追求吞吐量

RabbitMQ:
Connection:连接
Channel:管道 信道 默认一个连接只有一个信道
Exchange:交换机,接受消息并转发消息
Fanout:转发消息给所有队列
Direct:指定RK(RoutingKey),符合RK的队列可以获取消息
Topic:通配符 *(匹配一个单词) #(匹配任意多个)
Queue:队列,接受 转发 存储消息
RoutingKey:路由键
Producer:生产者,发送消息的应用程序
Consumer:消费者,接受并消费消息的应用程序

五种消息模型:

	1.简单模型(Simple)
		一个生产者 一个队列 一个消费者
	2.工作模型(work queue)
		一个生产者 一个队列 多个消费者  消息只能被一个消费者消费
		能者多劳(Fair Dispatch 公平分发):channel.basicQos(1)

	3.发布订阅(publish/subscribe)
		一个生产者 一个交换机 多个队列 每个队列有自己的消费者
		
	4.路由模型(route)
		多了一个routingKey
	
	5.通配模型(Topic)

简单面试题
1.怎么避免消息堆积?

	1.搭建消费者集群(工作队列) 配合能者多劳、公平分发
	2.多线程消费

2.怎么避免消息丢失?

	1.生产者确认
	2.消息持久化:交换机持久化 队列持久化 消息持久化
	3.消费者确认:basicAck
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/651259.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号