C++ ActiveMq:持久队列和脱机系统

C++ ActiveMq:持久队列和脱机系统,c++,activemq,activemq-cpp,C++,Activemq,Activemq Cpp,我是ActiveMQ技术的新用户,在使用这项技术时遇到了一些问题 我有以下情况: 我有一个软件,运行在嵌入式(离线)ARM设备中,在运行时将一组视频归档到可上传硬盘上 有时(每天4-5个事件),我必须将报警事件与这些视频关联,并将报警排在持久队列中 我们必须每月提取一次硬盘,并将其连接到另一个嵌入式在线ARM设备,该设备应将离线ARM设备产生的警报通知ActiveMQ服务器 现在我的问题是:如何将持久队列存储在硬盘上,以便离线ARM设备生成的事件可供在线ARM系统使用(在线和离线嵌入式设备之间的

我是ActiveMQ技术的新用户,在使用这项技术时遇到了一些问题

我有以下情况:

  • 我有一个软件,运行在嵌入式(离线)ARM设备中,在运行时将一组视频归档到可上传硬盘上
  • 有时(每天4-5个事件),我必须将报警事件与这些视频关联,并将报警排在持久队列中
  • 我们必须每月提取一次硬盘,并将其连接到另一个嵌入式在线ARM设备,该设备应将离线ARM设备产生的警报通知ActiveMQ服务器
  • 现在我的问题是:如何将持久队列存储在硬盘上,以便离线ARM设备生成的事件可供在线ARM系统使用(在线和离线嵌入式设备之间的唯一“连接”是硬盘)

    请注意,我无法更改向在线服务器发送消息的方式,因为它不是我公司开发的系统

    致意

    Giovanni

    听起来你想要一种“存储转发”的消息模式。您可以将“脱机”ActiveMQ代理配置为尝试连接到“联机”ActiveMQ代理。网络连接器将尝试以可配置的间隔进行连接,当其“联机”时,将开始自动发送消息

    稍微不利的一面是代理将尝试连接到远程代理(即使在脱机时),因此您需要管理日志循环或日志记录级别以适应

    查找静态://网络连接器uri


    嗨,Matt,我想我理解建议的方法。使用静态连接器,如果板A脱机2天,第三天连接到运行“服务器”的主机C,排队的消息将正常发送。然而,我对我的系统有一个疑问:设备a离线并生成消息;硬盘每周与a断开一次连接,然后连接到B,B是一块在a上运行相同软件的板,但连接到ActiveMq服务器代理。我不明白如何允许A板上的ActiveMq生成的消息由B板传递到服务器C。如果所有板上的ActiveMq文件的存储位置在同一目录中,并且ActiveMq版本相同:B板上的软件应该启动代理,从A读取存储在硬盘上的消息并将其传送到服务器C即可。另一种选择可能是采用补偿事务或文件系统即队列的方法。将文件存储在文件夹中,在连接存储时进行进程检测(文件系统监视器或cron作业),然后在连接测试通过时将消息发布到服务器C上的代理。