关于ActiveMq的持久化订阅

2023-11-03

1. ActiveMq 客户端

<!-- 自定义 -->
<bean id="jmsTopicReceive" class="com.pinganfu.paff.runtime.jms.receive.JmsReceiver">
<property name="connectionFactory" ref="jmsFactoryReceive" />
<!-- 指定发送的主题 -->
<property name="destinationName" value="paff.topic" />
<!-- 主题还是队列 -->
<property name="pubSubDomain" value="true" />
<!-- 异步接受回调 方法 -->
<property name="messageListener">
<bean class="com.pinganfu.paff.runtime.jms.MyJmsReceiverListener" />
</property>
<!-- 持久化订阅 配置-->
<property name="subscriptionDurable" value="true"></property>
<property name="clientId" value="connection.system002" />
<property name="durableSubscriptionName" value="subscriptionName.system002"></property>
</bean>

2
修改 clientId 与 durableSubscriptionName的值,每次启动
都会在ActiveMq实列注册持久定阅者,通过控制台可以看到多个持久订阅者,如图

数据库中表记录如下select * from ACTIVEMQ_ACKS

可获知持久的订阅者保存在数据库中ACTIVEMQ_ACKS表中,
其中最重要的一个字段LAST_ACKED_ID中值为,对应表中的ACTIVEMQ_MSGS中的ID值。
在新建持久订阅时者时,LAST_ACKED_ID中的值为ACTIVEMQ_MSGS表中最大ID值。

当此订阅者为在线状态时,会消费主题消息,当消费完成时,LAST_ACKED_ID 又会更新为烊ACTIVEMQ_MSG表中类型为topic消息的最大ID值

LAST_ACKED_ID,相当于每个持久订阅者消费到消息的最大值。

2. 当每个持久订阅者把所有消息消费完成时,数据库中的记录并没有删除。Aactive默认策略是每隔5分钟清除没有用的消息。
可以通过jdbcPersistenceAdapter中属性中cleanupPeriod来改变清除间隔时间


持久化表结构说明:

当在启动ActiveMQ时,先判断表是否存在,如果不存在,将去创建表,如下:
(1)ACTIVEMQ_ACKS:持久订阅者列表
1.CONTAINER:类型://主题
如:topic://basicInfo.topic
2.SUB_DEST:应该是描述,与1内容相同
3.CLIENT_ID:持久订阅者的标志ID,必须唯一
4.SUB_NAME:持久订阅者的名称.(durableSubscriptionName)
5.SELECTOR:消息选择器,consumer可以选择自己想要的
6.LAST_ACKED_ID:最后一次确认ID,这个字段存的该该订阅者最后一次收到的消息的ID

(2)ACTIVEMQ_LOCK:进行数据访问的排斥锁
1.ID:值为1
2.TIME:时间
3.BROKER_NAME:broker的名称
这个表似为集群使用,但现在ActiveMQ并不能共享数据库.

(3)ACTIVEMQ_MSGS:存储Queue和Topic消息的表
1.ID:消息的ID
2.CONTAINER: 类型://主题
如:queue://my.queue
Topic://basicInfo.topic
3.MSGID_PROD:发送消息者的标志
MSGID_PROD =ID:[computerName][…..]
注意computerName,不要使用中文,消息对象中会存储这个部分,解析connectID时会出现Bad String错误.
4.MSGID_SEQ:还不知用处
5.EXPIRATION:到期时间.
6.MSG:消息本身,Blob类型.
可以在JmsTemplate发送配置中,加上<property name=”timeToLive” value=”432000000”/>,5天的生命期,如果消息一直没有被处理,消息会被删除,但是表中会存在CONTAINER为queue://ActiveMQ.DLQ的记录.也就是说,相当于将过期的消息发给了一个ActiveMQ自定义的删除队列..

<二>关于ActiveMQ的持久订阅消息删除操作
1.主题消息只有一条,所有订阅了这个消息的持久订阅者都要收到消息,只有所有订阅者收到消息并确认(Acknowledge)之后.才会删除.
说明:ActiveMQ支持批量(optimizeAcknowledge为true)确认,以提高性能
2.ActiveMQ执行删除Topic消息的cleanup()操作的时间间隔为5 minutes..
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于ActiveMq的持久化订阅 的相关文章

  • 如何在 AUTO_ACKNOWLEDGE JMS 会话场景中模拟消息重新传递?

    在下面的测试中 我尝试模拟以下场景 消息队列启动 启动设计为在消息处理期间失败的消费者 产生一条消息 消费者开始处理消息 在处理过程中抛出异常来模拟消息处理失败 失败的消费者被停止 另一个消费者启动的目的是接收重新传递的消息 但我的测试失败
  • 如何在Mule中创建独占队列消费者?

    在 ActiveMQ 中 您可以为队列配置独占消费者 例如 Queue Name Here consumer exclusive true 如何在 Mule 中配置像上面这样的独占消费者 您需要对队列名称进行 URL 编码 因为 Mule
  • 什么时候插入排序比合并排序快?

    对于家庭作业问题 我被告知插入排序以 8n 2 运行 合并排序以 64 n lg n 运行 作为我得到的解决方案的一部分 它说只要 n 它来自这个 代数 推理路线 steps in insertion sort lt steps in me
  • Android 运行时布局教程

    有谁知道如何在 android 运行时执行活动布局或有一个很好的参考 这是我的活动的代码 我确信我只是忽略了在这里做一些事情 package com isi sa import android app Activity import and
  • ActiveMQ NMS:当代理关闭时,connection.start() 会因故障转移协议而挂起

    我有使用 nms activemq 1 5 0 的 C 应用程序 当我的应用程序启动时 它尝试使用故障转移协议连接到代理 我有两个主从配置的代理 如果两个经纪人都关闭了 我的应用程序就会因为以下原因而陷入等待状态 connection st
  • 使用 Gattle 向 ActiveMQ 发布消息

    我一直在使用Gatling将消息发布到 ActiveMq 服务器 我明白了 java lang SecurityException 无效的用户名 null 或空 不过我使用有效的用户名和密码 这是我的测试代码 抛出了异常 任何有关如何解决此
  • ActiveMQ:如何以编程方式监控嵌入式代理

    我想从代码内部监控嵌入式 ActiveMQ 5 8 代理 如何才能做到这一点 我需要 JMX 连接吗 我想防止暴露 JMX 有没有办法访问org apache activemq broker jmx http activemq apache
  • 无法调试,致命信号 6 (SIGABRT) 位于 0x00007c37(代码=-6)

    我遇到了以下情况 无法调试 Android 应用程序 我可以运行它 但无法调试它 我开始了全新的项目 复制了所有内容并且它有效 意味着能够调试 但又得到了这个 我在模拟器和手机上都尝试过 但没有成功 我使用的是Android Studio
  • 限制 PHP 函数或命令的执行时间[重复]

    这个问题在这里已经有答案了 您好 是否可以仅对命令或函数设置时间限制 例如 function doSomething code here function1 some code here 我只想为 function1 设置时间限制 存在 s
  • 如何使用 NMS 和 C# 识别 ActiveMQ 断开连接

    我有一个 C 发布者和订阅者 它们使用 ActiveMQ 和 NMS 相互通信 一切工作正常 除了我无法知道 ActiveMQ 何时出现故障 这对于消费者来说尤其不利 他们停止获取数据 但除了数据停止显示之外 不会引发任何错误或事件 有没有
  • MS 缺少 VSTO 4.0 运行时下载?

    我们有代码检查 VSTO 4 0 运行时是否存在并下载 如果丢失 直到今天这一切都运作良好 MS 中的 VSTO 运行时文件似乎丢失了 有人对这个有了解吗 我们能否告诉客户这是 MS 问题并且很快就会得到解决 Google 没有找到任何有关
  • 使用 eval 加载模块

    我在 Perl 和内置函数方面遇到了一些麻烦eval http perldoc perl org functions eval html 我浏览了网络 但找不到任何答案或示例代码 我想动态加载模块 在执行时间之前我不知道它们 module
  • 应用程序启动时立即隐藏导航栏

    基于以下代码片段 我能够隐藏状态栏当应用程序启动时 但不是导航栏 由后退 主页和任务管理器按钮组成的栏 因为它隐藏了稍后在 MainActivity 的线程完成加载后 这是清单
  • 从 datagridview C# 中检索数字值

    我正在尝试从 datagridview 检索数值 表中的值和变量 weeklyTotal 的数据类型都是整数 我也试图将其转换为整数 我浏览了整个网站是否有类似的问题 但没有一个解决方案有帮助 我收到的错误消息是 当转换为数字时 该值必须小
  • activemq 的优先级

    我们目前正在使用 JMS 和 activemq 5 5 1 开发一个应用程序 我们想为某些消息定义更高的优先级 这将使它们首先被消耗 设置生产者和消费者后 通过spring 3 1 JMSTemplate 优先级并不能完全发挥作用 事实上
  • C++ 仪器(诊断)库

    我正在考虑向我的应用程序添加代码 以收集诊断信息以供以后检查 是否有为此目的创建的 C 库 我想做的与分析类似 但又不一样 因为收集的数据将更多地用于调试而不是分析 EDIT 平台 Linux要收集的诊断信息 由应用程序逻辑 各种断言和统计
  • 运行时嵌套循环的数量

    我正在尝试输出一组整数从 1 到 max 的所有可能的唯一整数组合 因此 对于 3 个整数且最多 4 个整数 我会得到 123 124 134 234 我正在使用嵌套的 for 循环来执行此操作 但我希望允许用户在运行时输入整数的数量 现在
  • 具有重复符号的 C++ 插件库上的段错误

    我有一个跨平台 C 应用程序 它分为多个共享库 并从插件共享库加载附加功能 插件库应该是自包含的并自行运行 无需了解或依赖于调用应用程序 其中一个插件包含从主应用程序复制的代码 因此包含与引擎中的符号名称重复的符号名称 是的 我知道这通常是
  • 无法在 Eclipse 中运行 SDL 程序,但可以在 Windows 资源管理器中运行

    我已经安装并设置了 SDL 并设法获得了一个要构建的教程示例 教程代码来自http zamma co uk setup sdl2 eclipse windows http zamma co uk setup sdl2 eclipse win
  • 使 C# 编译器相信执行将在成员返回后停止

    我认为目前这是不可能的 或者这是否是一个好主意 但这是我刚才正在考虑的事情 我使用 MSTest 对我的 C 项目进行单元测试 在我的一项测试中 我执行以下操作 MyClass instance try instance getValue

随机推荐

  • 从4行代码看右值引用

    从4行代码看右值引用 从4行代码看右值引用 概述 右值引用的概念有些读者可能会感到陌生 其实他和C 98 03中的左值引用有些类似 例如 c 98 03中的左值引用是这样的 int i 0 int j i 这里的int 是对左值进行绑定 但
  • TensorFlow 1.8.0 + TensorRT 4.0 安装过程 (5月11日更新:目前在Ubuntu 18.04不可行)

    在上一篇 基于tar文件的TensorRT 4 0安装过程 中 完成了TensorRT的安装 但由于其语言环境为C 因而无法与TensorFlow结合 TensorFlow 1 7 0 已经集成了TensorRT 但需要从头编译安装 现记录
  • Android 应用详情中修改权限后应用崩溃

    Android 应用详情中修改权限后应用崩溃 一 问题描述 在有fragment 没有空构造函数 或者私有空构造 的页面 应用进入后台 手动进入应用详情修改应用权限 重新打开应用 应用崩溃 二 问题排查 1 经网络查询得知后台修改应用权限后
  • unity3d简单的粒子特效

    实现目标 实现一个简单的粒子效果 实现过程 首先创建一个空的对象 然后添加一个Particle System 编写控制粒子运动的脚本 在Start函数中对需要用到的参数进行初始化 particleArray new ParticleSyst
  • Postman接口测试

    Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 它提供功能强大的 Web API HTTP 请求调试 B站最通俗易懂 Python接口自动化测试从入门到精通 超详细的进阶教程 看完这套视频就够了 1 环境变量
  • 数据库拆分3--使用sharding-jdbc 支持子查询sql

    最近在使用sharding jdbc来改造项目的时候遇到了一些问题 主要是有关子查询的 记录一下 结论 4 0 0 RC1版本是有限制支持子查询的 主查询和子查询必须保证相同的分片键 4 4 1可以支持子查询 子查询判断条件恒为false
  • Vision Transformers for Dense Prediction

    paper https arxiv org abs 2103 13413 code https github com intel isl DPT Abstract 我们引入了密集视觉转换器 这是一种利用视觉转换器代替卷积网络作为密集预测任务
  • 悬浮球(多机型悬浮窗权限设置,状态栏适配,可自动或手动设置大小,点击跳转WebView,拖拽处理)

    悬浮球 多机型悬浮窗权限设置 状态栏适配 可自动或手动设置大小 点击跳转WebView 拖拽处理 应用内和应用外都可以显示 可设置取消 可做SDK 和依赖类 横竖屏切换处理 项目地址 GitHub https github com gitU
  • kibana使用

    kibana更新6 更新后运行kibana要求elasticsearch5 版本 更新elasticsearch 下载并安装 public signing key rpm import https artifacts elastic co
  • 英飞凌单片机编译器 TASKING TriCore Eclipse IDE

    新建静态库工程 右击新建c c 工程 也可import导入工程 工程名 不要有中文 勾选TC39X 完成工程的创建 在工程右键选择clean 对project先进行clean project 再build project 对于文章出现的任何
  • 第一章、银行会计的基本原理和基本核算方法

    各位技术大牛 这一系列的blog主要是介绍银行会计的操作实务 希望为在初入银行的技术人员提供一些业务逻辑上的帮助 内容分为以下几个章节进行分析 银行会计的基本理论和基本核算方法 人民币存款业务会计核算 人民币贷款业务核算 联行往来业务的核算
  • arcgis表转excel一直失败_Excel表转换为shp格式时属性值丢失问题

    早前在网上扒拉一些数据 放到excel中进行加工 然后加载到arcgis中 生成点要素 然后转为shp格式文件 但是在此过程中遇到了一些小问题 有些字段的信息在转换过程中会丢失 一开始我以为是我的excel编码的问题 但后来捣鼓了好多次 都
  • 区块链上的数据库:CovenantSQL

    引言 最近对区块链技术有一些兴趣 区块链技术估计这个名字已经被大家所熟知了 但区块链数据库估计还没几个人知道 目前国内有两种数据库RepChain 中科院研发 和CovenantSQL 本文讲重点讲解CovenantSQL 这一新兴区块链数
  • 超好用!分享8个 Python 自动化脚本

    每天你都可能会执行许多重复的任务 例如阅读新闻 发邮件 查看天气 打开书签 清理文件夹等等 使用自动化脚本 就无需手动一次又一次地完成这些任务 非常方便 而在某种程度上 Python 就是自动化的代名词 1 自动化阅读网页新闻 这个脚本能够
  • OLED拼接屏代工,如何选择靠谱的制造商?

    OLED拼接屏代工是一种新型的显示技术 它采用有机发光二极管 OLED 作为显示元件 具有高亮度 高对比度 高色彩饱和度 快速响应 低功耗等优点 被广泛应用于电视 手机 平板电脑 汽车显示屏等领域 而OLED拼接屏则是将多个OLED屏幕拼接
  • svm通俗讲解_通俗易懂--SVM算法讲解(算法+案例)

    1 SVM讲解 SVM是一个很复杂的算法 不是一篇博文就能够讲完的 所以此篇的定位是初学者能够接受的程度 并且讲的都是SVM的一种思想 通过此篇能够使读着会使用SVM就行 具体SVM的推导过程有一篇博文是讲得非常细的 具体链接我放到最后面
  • 校园贷受阻,汽车分期能帮趣店挽救困局吗?

    随着新零售理念被提出 众多传统零售领域均发生了颠覆式的零售革命 传统便利店到无人零售等新零售模式所获得的成功 更是激起了其他领域对新零售理念的热捧与追随 2018年1月中旬 以校园分期贷为主营业务的趣店 在上市之后又对外宣布将进军汽车新零售
  • Camera.WorldToScreenPoint 世界转屏幕位置

    Camera WorldToScreenPoint 世界转屏幕位置 function WorldToScreenPoint position Vector3 Description描述 Transforms position from wo
  • 7.TensorRT中文版开发教程-----TensorRT中的INT8量化详解

    7 如何使用TensorRT中的INT8 点击此处加入NVIDIA开发者计划 7 1 Introduction to Quantization TensorRT 支持使用 8 位整数来表示量化的浮点值 量化方案是对称均匀量化 量化值以有符号
  • 关于ActiveMq的持久化订阅

    1 ActiveMq 客户端