消息中间件

消息中间件出现的**背景**:由于父工程模块下有多个子模块,而且子模块之间的调用关系很多,尤其商家 模块涉及的关系最多,其中商家模块用到了商品服务、广告内容服务、搜索服务、页面生成服务。这些模块之间的依赖关系成为耦合,耦合越多,维护越多,维护就越困难。由此 为了改善系统模块之间的调用关系、减少模块之间的耦合,就产生了消息中间件。

消息队列是分布式系统中的重要组件,主要是解决应用耦合、异步消息、流量削锋等问题。
使用较多的消息队列有activeMQ,RabbitMQ,Kafka,MetaMQ,roketMQ等。

消息队列的应用场景


1.异步处理:比如用户注册后,用户点击注册之后注册信息写入数据库,然后发注册邮件和注册短信。传统的的做法是按照顺序,先进行发邮件再发短信,最后返回给客户端,响应的时间比较长。而使用消息队列之后,注册信息写入s数据库之后,不再是顺序的发送信息,而是写入消息队列,然后消息队列异步处理同时进行发送邮件和发送短信。
2. 应用解耦:用户下单后,订单系统需要通知库存系统。传统的做法是订单系统调用库存系统的接口。这种做法的缺点:1. 如果库存系统无法访问,则订单减库存的操作将失败,从而导致订单失败。2. 订单系统与库存系统耦合。
3. 流量削锋:一般用秒杀或团抢活动中使用。因为秒杀活动,流量过大,导致流量暴增。为解决这个问题,一般需要在应用前端加入消息队列,可以控制活动的人数。用户的请求,服务器接受后,首先写入消息队列,如果消息队列的队列长度超出了最大数量,则直接抛出用户请求,或者跳转到错误的页面。

JMS

消息服务是一个消息服务的标准/规范:它使分布式通信耦合度更低,消息服务更加可靠以及异步性。
JMS标准中,y有两种消息模型:点对点模式、发布订阅模式
点对点模式(P2P):一个消息只能由一个消费者消费。
1. 只有一个消费者(一旦被消费,消息就不存在消息队列中了)
2. 发送者和接收者时间上没有依赖性,也就是不管接收者在不在线,消息都能发送到队列中。
3. 接收者成功接收消息之后会向队列应答成功。
发布订阅模式(Pub/sub):三个角色 :主题、发布者、订阅者。
active MQ流程:
生产者:1. 创建连接工厂2. 获取连接3. 启动连接。4.获取session(参数一:是否启动事务;参数二:消息确认模式) 5.创建队列对象 6.创建消息生产者 7.创建消息 8.发送消息 9.关闭资源
消费者:1.创建连接工厂 2.获取连接 3.启动连接 4.获取session 5. 创建主题对象 6. 创建消息消费 7.监听消息 8.等待键盘输入 9.关闭资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值