activemq
1mq的作用
用于秒杀场景队列中、用于一系列动作但各动作之前连接性不是很强的场景
注册之后、发送邮件
削峰填谷
2activemq的特征
符合jms规范、
事务性、非事务性
同数据库一致,commit、rollback
持久化、非持久化
存在5中kahadb、leveldb、jdbc、内存、先存入文件,超过一定时间记录到数据库
同步发送、异步发送
异步性能高、但是不能保证数据成功发送。
持久化用同步发送、开启事务用异步发送、一般情况都用异步发送
3JMS消息类型
TextMessage:java.lang.String 对象,如 xml 文件内 容
MapMessage:键/值对的集合,键值是String对象,值 类型可以是Java任何基本类型
BytesMessage:字节对象
StreamMessage:java中的io流
ObjectMessage:可序列化的java对象
Message:没有消息体,只有消息头部和属性的JMS消息
4消息模型
P2p点对点:1对1,允许消费者没有启动之前、生产者发送消息,能成功接收
发布与订阅:消费者不能消费启动之前生产者发送的消息
5消息确认
消息确认有四种 ACK_MODE,分别是
AUTO_ACKNOWLEDGE = 1 自动确认
CLIENT_ACKNOWLEDGE = 2 客户端手动确认
DUPS_OK_ACKNOWLEDGE = 3 自动批量确认
SESSION_TRANSACTED = 0 事务提交并确认
ACK_TYPE
DELIVERED_ACK_TYPE = 0 消息"已接收",但尚未处理结束
STANDARD_ACK_TYPE = 2 “标准"类型,通常表示为消息"处理成功”,broker 端
可以删除消息了
POSION_ACK_TYPE = 1 消息"错误",通常表示"抛弃"此消息,比如消息重发多
次后,都无法正确处理时,消息将会被删除或者 DLQ(死信队列)
REDELIVERED_ACK_TYPE = 3 消息需"重发",比如 consumer 处理消息时抛出
了异常,broker 稍后会重新发送此消息
做技术人的指路明灯,做职场生涯的导师
INDIVIDUAL_ACK_TYPE = 4 表示只确认"单条消息",无论在任何 ACK_MODE 下
UNMATCHED_ACK_TYPE = 5 在 Topic 中,如果一条消息在转发给“订阅者”
时,发现此消息不符合 Selector 过滤条件,那么此消息将 不会转发给订阅
者,消息将会被存储引擎删除(相当于在 Broker 上确认了消息)。
Client 端在不同的 ACK 模式时,将意味着在不同的时机发送 ACK 指令,每个 ACK
Command 中会包含 ACK_TYPE,那么 broker 端就可以根据 ACK_TYPE 来决定
此消息的后续操作
6ActiveMQ 静态网络
允许多台机器共享mq队列