ActiveMq消息队列

news2024/10/6 12:24:23

ActiveMq是一种开源的java程序,支持Java消息服务(JMS) 1.1 版本

一、持久化机制

        1、KahaDB:5.4及之后版本,默认使用日志文件

                activemq.xml默认使用KahaDB持久化存储,默认配置安装路径data目录下

           <persistenceAdapter>
                   <kahaDB directory="${activemq.data}/kahadb"/>
           </persistenceAdapter>

                KahaDB日志文件默认配置安装路径data目录下

                

 

                db-num.log:存储消息数据,32M一个,超过会自动生成新的db-num+1.log文件,不在使用删除或者归档此文件

                db.data :存储索引,持久化BTree索引db.log中的记录

                db.free :空闲页面的id

                db.redo : 消息恢复,KahaDB强制退出后启动,用于恢复BTree索引

                lock :文件锁,获取KahaDB需求权限Broker

        2、AMQ :5.3及之前的版本,文件存储形式,写入速度快,容易恢复。默认存储大小32M

        3、JDBC:数据库持久化消息(例如mqsql)

                数据库连接驱动:mysql-connector-java.version.jar放在mq安装lib目录中

                修改持久化方式:activemq.xml中的persistenceAdapter修改为jdbc方式

     <persistenceAdapter>

          <jdbcPersistenceAdapter dataSource="#jdbcsouce" createTablesOnStartup="true" />

      </persistenceAdapter>

                        #jdbcsouce:mysql数据源配置

                         createTablesOnStartup : mq重启自动创建持久化jdbc所需表。默认true

                mysql数据库配置(#jdbcsouce):

        

<bean id="jdbcsource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
    <property name="url" value="jdbc:mysql://数据库IP/activemq?relaxAutoCommit=true"/> 
    <property name="username" value="用户名"/> 
    <property name="password" value="密码"/> 
    <property name="poolPreparedStatements" value="true"/> 
  </bean> 
  
</beans>

                数据库创建:mq重启后,自动创建表

                        activemq_msgs : 消息数据;

                        activemq_acks : 订阅关系;

                        activemq_lock : 集群环境使用,记录哪个broker是当前的 master broker

                Journal数据库缓存插件:消息jdbc持久化单条消费qps较低,通过缓存批量写入jdbc提高消费速度,activemq.xm配置如下

        

<persistenceFactory>
      <journalPersistenceAdapterFactory 
      		journalLogFiles="4"
      		journalLogFileSize="32768"
      		useJournal="true"
      		useQuickJournal="true"
      		dataSource="#mysql-ds" 
      		dataDirectory="activemq-data /> 
</persistenceFactory>

        4、LevelDB:5.8及以后版本,文件存储。比KahaDB快,基于LevelDB索引,不是BTree索引(未普及,建议KahaDB),activemq.xml中如下

           <persistenceAdapter>
                  <kahaDB directory="activemq-data“/>
           </persistenceAdapter>

        

 二、常见问题

        1、Mq服务器宕机怎么办

               宕机重启:非持久化消息存储在内存中,持久化消息是存储在文件中,重启会持久化消息从文件恢复

                消息文件超过文件限制

                        1)、非持久化:生产者阻塞,消费者停止消费。系统可连接无法生产和消费挂了状态

                        2)、持久化:生产者阻塞,消费者正常消费。系统待消息消费掉一部分,文件空间释放后可继续生产发送消息,恢复正常

          2、消息丢失

                

 

        如果客户端发送数据后直接close,心跳包发送失败报SocketException,缓存数据作废,服务端reade接收者缓存数据时报Software caused connetiion abort:recv failed。

        原因:非持久化消息超过内存设置,写入文件会阻塞所有操作,持续时间超过15s。如果客户端发送完消息,发送连接close时,服务器正好此操作,导致超过15s未应答,客户端直接调用socket关闭tcp连接。这时候接收者缓存数据作废,导致消息丢失

        解决方案:非持久消息及时处理不阻塞

                           持久化消息机制

                           启动事务,commit成功后等待服务器响应

 

          3、持久化消慢

                非持久化默认异步,持久化默认同步,通过开启事务采用异步发送提高效率

        4、集群消费消息不均匀

                原因:mq采用prefetch机制,通过批量获取数据(默认1000条),批消息未处理完,管理控制台消息认可见,不会分配其他消费者

                解决方案:设置prefetch设小点

        5、消息发送失败处理

                设置重发延迟时间和重传次数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/555388.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Django框架之模板其他补充

本篇文章是对django框架模板内容的一些补充。包含注释、html转义和csrf内容。 目录 注释 单行注释 多行注释 HTML转义 Escape Safe Autoescape CSRF 防止csrf方式 表单中使用 ajax请求添加 注释 单行注释 语法&#xff1a;{# 注释内容 #} 示例&#xff1a; {# 注…

09 FPGA—利用状态机实现可乐售卖机(附代码)

1. 理论 FPGA 是并行执行的&#xff0c;如果我们想要处理具有前后顺序的事件&#xff0c;就需要引入状态机。举个例子&#xff0c;将人看成 FPGA ,我们可以在散步的时候听歌和聊天这是并行执行的&#xff0c;但一天的行程安排却是以时间段前后执行的。 状态机简写为 FSM&#…

java前后端分离有详细内容吗?

微服务架构java前后端分离都有哪些具体内容&#xff1f;目前&#xff0c;有不少客户朋友经常询问我们类似的问题。其实&#xff0c;在新的经济发展形势下&#xff0c;提质增效的低代码开发平台微服务架构早已成为不少新老客户的选择&#xff0c;它们不仅能提高办公协作效率&…

成为更优秀的项目经理:快速提升影响力的六大原则与独门秘笈

在很多公司的组织架构中&#xff0c;项目经理并不是一个常规的职能岗位&#xff0c;项目组是为了某个项目目标临时组建的团队&#xff01; 这就造成了PM一个很尴尬的处境&#xff0c;权、责、利不匹配&#xff0c;也就是有责无权&#xff1a;PM既要对项目目标的实现负责&#…

K8S内容分发网络之集群,nginx,负载均衡,防火墙

目录 第一章.实验架构需求 第二章.实验环境准备 2.1.节点准备 2.2.环境准备 2.3.在master&#xff0c;node01&#xff0c;node02上操作安装docker 2.4.所有节点安装kubeadm&#xff0c;kubelet和kubectl 2.5.部署K8S集群 2.6.在master节点操作 2.7.所有节点部署网络插件…

小白windows安装python(图文详解)

以下是在 Windows 操作系统上安装 Python 的详细步骤&#xff1a; 打开浏览器&#xff0c;进入 Python 官网&#xff08;https://www.python.org/&#xff09;。 点击“Downloads”&#xff0c;然后选择适合您的操作系统的 Python 版本。例如&#xff0c;如果您的操作系统是…

“Shell“firewall防火墙

文章目录 一.Firewalld防火墙1.1firewalld概述1.2Firewalld和iptables的关系1.3Firewalld和iptables的区别 二.Firewalld网络区域2.1区域介绍&#xff1a;2.2firewalld 区域的概念:2.3Firewalld数据处理流程2.4Firewalld检查数据包的源地址的规则&#xff1a; 三.Firewalld防火…

05 Android开机启动之SystemServer

Android开机启动之SystemServer(SS) 一、梳理SystemServer启动流程 从上面整个Android开机启动思维导图(android 5.0的启动组成图)中可以看到: SystemServer是从Zygote中启动的。 开机->bootloader->kernel->init->zygote->SystemServer 二、SystemServe…

【嵌入式烧录/刷写文件】-1.5-Fill填充Motorola S-record(S19/SREC/mot/SX)文件

案例背景(共8页精讲)&#xff1a;该篇将告诉你&#xff0c;如何对一个S19文件进行填充&#xff1a; 对“起始地址”和“结束地址”内的非连续的Block块&#xff0c;进行填充&#xff1b;自定义填充范围。 目录 1 为什么要“Fill填充” 2 使用Vector HexView工具“填充”S19…

阿里,变“小”了,也变强了

文 | 螳螂观察 作者 | 青月 小公司总想做大&#xff0c;但在如今快速变换的科技浪潮下&#xff0c;一些大企业却想“变小”。 3月28日&#xff0c;阿里巴巴宣布启动“16N”组织变革&#xff0c;这意味着未来具备条件的业务集团和业务公司&#xff0c;都可以独立融资和独立上…

一文带你了解MySQL之InnoDB 统计数据是如何收集的

前言 本文章收录在MySQL性能优化原理实战专栏&#xff0c;点击此处查看更多优质内容。 我们前边唠叨查询成本的时候经常用到一些统计数据&#xff0c;比如通过show table status可以看到关于表的统计数据&#xff0c;通过show index可以看到关于索引的统计数据&#xff0c;那…

分享国内可用的免费ChatGPT网站_测评by杂草小生

参考的文章1&#xff1a;ChatGPT套壳网站汇总-5月21日更新_QQVQQ...的博客-CSDN博客 参考文章2&#xff1a;分享一个国内可用的免费ChatGPT网站_Aaron_Plus的博客-CSDN博客 ChatGPT是基于自然语言处理技术的聊天机器人&#xff0c;可以进行对话和提供相关信息。由于chatGPT不…

导入/导出 Postcat 格式文件,打通数据不再难

导入 Postcat 插件。 使用 导入功能有多个入口&#xff0c;你可以在 API 分组处点击加号导入 API&#xff1a; 也可以在点击设置&#xff0c;然后选择导入选项 导出 Postcat 插件 支持导出 Postcat JSON 文件。 使用 进入空间页面&#xff0c;可以看到导出功能&#xff0c;点…

XXL-SSO简要说明

一、介绍 XXL-SSO 是一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。 拥有”轻量级、分布式、跨域、CookieToken均支持、WebAPP均支持”等特性。现已开放源代码&#xff0c;开箱即用。 官方文档 二、集成 2.1、源码下载 下载地址 2.2、代码结构…

剪辑中如何保持画面连贯性,视频剪辑用什么软件比较好?

随着各种视频软件和平台的流行&#xff0c;越来越多的人更喜欢观看视频&#xff0c;还有很多人出于兴趣和爱好&#xff0c;想要制作自己的视频&#xff0c;那要如何剪辑才能制作更好的视频呢&#xff1f;有什么比较靠谱的视频剪辑软件呢&#xff1f; 视频剪辑中保持画面连贯性…

Redis分布式锁及Redisson的实现原理

Redis分布式锁 一。什么是分布式锁 在讨论分布式锁之前我们回顾一下一些单机锁&#xff0c;比如synchronized、Lock 等 锁的基本特性&#xff1a; 1.互斥性&#xff1a;同一时刻只能有一个节点访问共享资源&#xff0c;比如一个代码块&#xff0c;或者同一个订单同一时刻只…

python:将遥感数据使用matplotlib库绘制成图片

作者:CSDN @ _养乐多_ 本文将介绍使用matplotlib库绘制遥感数据成图片的代码。 文章目录 一、示例代码二、更换颜色条三、自定义颜色条四、分段离散颜色设置一、示例代码 要加载本地的TIFF数据并绘制图像,你可以使用Python中的rasterio库和matplotlib库。以下是一个示例代码…

【UE4】从零开始制作战斗机(中:飞机操控逻辑)

上一篇&#xff1a; 【UE4】从零开始制作战斗机&#xff08;上&#xff1a;准备模型、定义函数和变量&#xff09;_Zhichao_97的博客-CSDN博客 效果 步骤 1. 打开“BP_Jet”&#xff0c;在事件图表中添加如下节点 由于我们希望飞机一开始就是在空中飞行&#xff0c;所以一开…

数字孪生智慧路灯可视化系统 区域控制节能增效

前言 智慧灯杆是智慧城市建设的重要组成部分&#xff0c;可以完成照明、公安、市政、气象、环保、通信等行业数据信息的采集、发布和传输。同时&#xff0c;作为5g时代车联网、云网、通信网络建设的重要组成部分&#xff0c;智慧灯杆也将得到广泛应用。 建设背景 城市路灯存…

JVM常用参数和命令行工具

JVM参数类型 一&#xff1a;标准参数 - 所有的JVM实现都必须实现这些参数的功能&#xff0c;而且向后兼容 例&#xff1a; -help-server -client-version -showversion-cp -classpath 二&#xff1a;非标准参数 -X 非标准参数&#xff08;-X&#xff09;&#xff1a…