ActiveMQ专题

参考视频:https://www.bilibili.com/video/BV1vJ41177j1(Java基础从入门到精通ActiveMQ+企业面试题讲解)

消息持久

ActiveMQ提供了以下三种的消息存储方式:

(1) Memory 消息存储-基于内存的消息存储。  (非持久化方案,activeMq重新启动,消息会被清空)
(2) 基于日志消息存储方式,KahaDB是ActiveMQ的默认日志存储方式,它提供了容量的提升和恢复能力。
(3) 基于JDBC的消息存储方式-数据存储于数据库(例如:MySQL)中。

查看下面的application.yml文件,delivery-mode节点可以配置持久策略,如果是jdbc数据库的持久化方式,还需要在activeMq的配置文件去配置数据库连接池等。

server:
  port: 9001 #端口
spring:
  application:
    name: activemq-producer # 服务名称

# springboot与activemq整合配置
  activemq:
    broker-url: tcp://192.168.66.133:61616 # 连接地址
    user: admin # activemq用户名
    password: admin :# activemq密码
    packages:
      trust-all: true # 让ActiveMQ信任全部自定义对象,实现对象的序列化或反序列化

# 指定发送模式 (点对点 false , 发布订阅 true)
  jms:
    pub-sub-domain: false
    template:
      # no_persistent(非持久化配置-消息存在内存里面)
      delivery-mode: persistent  # 持久化配置(消息存储在日志文件里面)

# 自己定义目标名称(队列或主题)
activemq:
  name: springboot_queue
 

消息事务

一般偏向于生产者的应用,一个事务发送,其中一组消息要么全部能达到服务器,要么都不能到达服务器。

当然消费方也可以开启事务,但他的事务的开启是针对一个消息而已的,commit或rollback,回滚的化会从服务器往消费方发送6次,超过流程这个消息会进入死心队列。

消息确认机制

注意:消息确认机制与事务机制是冲突的,只能选其中一种。所以演示消息确认前,先关闭事务。

可以理解为消费端的确认机制

在事务性会话中,当一个事务被提交的时候,确认自动发生。在
非事务性会话中,消息何时被确认取决于创建会话时的应答模式(acknowledgement mode)。该参
数有以下三个可选值:

Session.AUTO_ACKNOWLEDGE:自动确认

Session.CLIENT_ACKNOWLEDGE:手动确认(最多的使用)

如果开启了手动确认的配置但是没有进行acknowledge()消息没有被ack确认的话,消息会一直存在mq服务器等待着被消费,不会被消费掉,这个时候有其他消费方连接消息还是会被接收。

Session.DUPS_ACKNOWLEDGE:延迟确认,可能会造成消息的重复发送,一般不会用到

消息的投递方式

同步、异步、延迟、定

死信队列

注意:非持久化消息不会进入DLQ(死信队列),可以通过配置给每个队列配置独立的死信队列,不然的话所有发送不成功的队列都到一个死信队列中去,不好进行处理。

重发策略

即配置重发策略,比如说重发的次数以及重发的间隔时间等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值