当前位置: 首页 > 知识库问答 >
问题:

活动 MQ 仅在必要时保留在磁盘上

傅峻
2023-03-14

我在ActiveMQ中使用Java从Embedded-Linux发送消息。我的要求是,如果目标代理不可用,消息应该被持久化。我选择KahaDB作为持久化适配器,以便消息在代理重新启动后仍然存在。

broker = new SslBrokerService();

KahaDBPersistenceAdapter kahaDBPersistenceAdapter=new KahaDBPersistenceAdapter();
kahaDBPersistenceAdapter.setJournalMaxFileLength(16 * 1024 * 1024);
broker.setPersistenceAdapter(kahaDBPersistenceAdapter);

/** Connector setup code */
broker.start();

即使我已经将最大文件大小限制为16MB,我也只想在目标代理/消费者不可用的情况下保留消息。这样做的原因是限制CPU和磁盘的使用。例如:生成消息1,尝试发送消息。如果成功的持久化不应该发生,因为我对重新发送已经发送的数据不感兴趣(或者应该只在内存中发生)。生成消息2,3,4,但目标代理不可用,然后将消息持久化在磁盘上,以便在不太可能关闭的博克消息中存活下来。

在反复阅读ActiveMQ的文档后,我没有找到任何关于我的用例的答案,所以我向这个伟大的社区询问我正在寻找的东西是否实际可行。

共有1个答案

谈桐
2023-03-14

您必须编写一个自定义插件才能获得确切的方案。JMS没有描述一个用例,如果只有消费者不可用,则坚持使用,b / c可靠性契约也与生产者签订。我认为商店和前期设计将是您正在寻找的。将嵌入式代理配置为使用静态:网络连接器将其发送到目标代理。ActiveMQ 将在消息可用时自动推送到目标服务器,并在远程代理不可用时在嵌入式服务器上将它们排队。

 类似资料:
  • 关闭没有备份的笔记本电脑和存储的数据。也许如果你拉电池,它不会保存)Redis上传数据到内存本身?如何设置自动保存后,每次更改?还是更容易运行一个命令手动?

  • 问题内容: 一位同事提到他听说过一个轻量级的收藏集,当内容太满时会自动分页到磁盘上-但是他不记得这个名字了。我想它看起来像这样: 然后将x = 0推到x = 500到磁盘。关键是能够在不将整个内容加载到内存的情况下对其进行迭代。 这是针对具有少量内存的胖客户端。 有人知道吗(或类似的东西)? 问题答案: 好吧,我所知道的唯一具有这种功能的工具是流行系统:prevayler和space4j。尽管它们

  • 我有一个stl容器,它保存了很多数据。 例如,定义是: 我想要的是将它保存在一个文件中,然后下次,我可以读取这个文件来快速恢复它。 我觉得正常的方式,比如: 不起作用,因为它只保存指针。 那么,如何将其保存在文件中并通过读取文件恢复呢?

  • 问题内容: 我正在使用,并试图找到一种 正确 保存和加载密钥的方法。有没有建立一个正确的方式从。如果是这样,有没有办法正确地做到这一点? 非常感谢大家。 问题答案: 您需要某种格式来编组密钥。可在以下位置找到Go标准库支持的一种格式:http : //golang.org/pkg/crypto/x509/#MarshalPKCS1PrivateKey 逆函数为http://golang.org/p

  • 问题内容: 我有一个输入活动。初始化活动后,将显示Android键盘。在用户集中输入之前,键盘如何保持隐藏状态? 问题答案: 我认为以下可能有效 我以前已经将它用于此类事情。