消息中间件ActiveMQ

5 篇文章 0 订阅
5 篇文章 0 订阅

ActiveMQ的下载安装:

注意点:
1.可以直接运行bin目录下的win64目录下的wrapper.exe
2.用户名和密码默认为admin,admin
3.运行之后代码连接activeMQ的接口是61616,例如:“tcp://127.0.0.1:61616”

消息中间件:
例如一个注册可能不仅仅是一个数据库入库操作,可能还有其他的例如:
发送激活邮件,赠送积分或者新人红包,发送营销短信等
以往我们的处理方式一般是将这些操作统一放在一个方法里面,来保证事务统一性
以往我们的处理方式一般是将这些操作统一放在一个方法里面,来保证事务统一性

而实际上这些是操作都是相互独立的操作,是不同的领域模型,例如可能发送邮件和发送短信是放在一个领域里面的,那么我们实际上就是调用不同的领域平台来共同完成注册操作

但是如果我们将这些操作分隔来开,那么我们就需要面临一个如何保证操作一致性的问题,而这就是分布式消息中间件的作用:实现异步化的解耦

异步化解耦的好处:
和顺序性执行相比,执行时间大大缩减
不同的模块可以同时执行

消息中间件的功能:
解耦业务逻辑,异步化,流量整形,数据的最终一致性(最大化的重试去完成最终一致性)

概念介绍:
JMS是java对不同消息中间件产品的规范,以便于相互之间调用,类似于JDBC
AMQP:高级队列消息协议,统一了不同语言范围的消息中间件规范
MQTP:用于物联网,满足小型设备消息协议规范

MOM:面向消息的中间件,规定了客户端之间通过消息中间件来进行交互,消息中间件满足一个消息只有被另一个客户端消费之后才会消失
在这里插入图片描述

JMS 框架结构:

在这里插入图片描述
使用JMS 和消息中间件进行交互:

在这里插入图片描述

JMS基本功能:
消息传递域:point-point;发布订阅(publish/subscribe)
point-point;每个消息只能有一个消费者
pub/sub;每个消息有多个消费者
消息头(辨别消息),消息体(我们传递的消息内容),

JMS 整合ActiveMQ
使用JMS的API来实现消息的发送和接收,JMS统一使用JmsTemplate来发送Topic和Queue消息,使用@JMSListener注解来接收消息

P2P模型和pub/sub模型总结
p2p:
如果session关闭时,有一些消息已经接受到,但是没有被签收,消费者下一次连接到相同队列的时候签收
如果用户在receive方法中设定了消息的选择条件(消息过滤)
如果是持久化消息,消息会被持久化保存,知道消息被签收

pub/sub
持久化订阅和非持久化订阅
在持久化订阅的前提下,不能回复或者重新指派一个未签收的消息
如果所有的消息必须要签收,则使用持久化订阅

如果是事务性会话如果不调用session的commit方法,消息是不会被发送到消息中间件的

activeMQ消息发送流程图:

在这里插入图片描述
消息接收流程:
在这里插入图片描述

关键类:
ResponseCorrelator 实现异步请求
MutexTransport 实现锁
WireFormatNegotiator 发送数据解析相关的协议信息,比如:缓存
InactivityMonitor 心跳机制

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值