ActiveMQ
2021-08-20 09:29:17 16 举报
AI智能生成
ActiveMQ技术路线
作者其他创作
大纲/内容
一对一
Queue
一对多
Topic
Destination(消息类型)
基础
producer.send(message);
生产者
consumer.receive();
同步阻塞
consumer.setMessageListener();
异步非阻塞
消费者
是否持久化
message.setJMSDeliveryMode
设置过期时间,默认永不过期
message.setJMSExpiration
默认4
设置优先级
message.setJMSPriority
设置消息的标识
message.setJMSMessageID
单独设置消息发送目的地
message.setJMSDestination
消息头
封装具体的消息数据
TextMessage
MapMessage
StreamMessage
BytesMessage
ObjectMessage
5种消息体
发送和接收的消息体要相同
消息体
额外的附加信息
message.setXxxProperty
消息属性
消息
api发送和接收
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
持久化
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
非持久化
基础API
默认持久化
先运行消费者,在MQ注册成功后,即时离线,下次在线时也能消费消息
事务偏生产者
开启事务后,session不提交,消息不入队
可以多次重复消费消息
开启事务后,session不提交,消息不出队
事务
签收偏消费者
默认
Session.AUTO_ACKNOWLEDGE
自动签收
Session.CLIENT_ACKNOWLEDGE
message.acknowledge();
手动签收
关闭事务
签不签收不影响
session提交,则消息自动签收
开启事务
签收
高可用性
maven依赖
配置文件
声明队列
声明主题
发送消息
@JmsListener(destination = \"name\")
true 把name当成Topic处理
false 把name当成Queue处理
spring.jms.pub-sub-domain
监听消息
去掉 spring.jms.pub-sub-domain 配置
相当于取默认值
Queue 监听不变
Topic 监听增加自定义监听工厂
当需要支持两种模式时
SpringBoot整合
目前主要及默认协议
tcp
性能更好
nio
amqp
stomp
ssl
mqtt
ws
其他
协议
5.3版本之前默认方式,保存到文件
AMQ Message Store
5.4之后默认方式
数据存储文件,32M一个文件
db-*.log
Btree的索引
db.data
进行消息恢复
db.redo
当前db.data文件里哪些页面是空闲的
db.free
锁文件
lock
KahnDB
尚不完善
LevelDB
配置文件中配置数据库连接
ActiveMQ启动时自动建表
createTableOnStartup
Queue消费之后被删除
Topic消费后还在
消息表
ACTIVEMQ_MSGS
订阅关系表
ACTIVEMQ_ACKS
集群环境下记录master
ACTIVEMQ_LOCK
三张表
MySQL
先保存到日志,如果消费者消费较慢,则批量写入数据库
ActiveMQ journal
ZooKeeper
Replicated LevelDB
实现
集群
延迟发送/定时投递
签收机制
ActiveMQ
0 条评论
回复 删除
下一页