【发布时间】:2016-05-25 05:23:20
【问题描述】:
我使用 Java 和 ActiveMQ 从 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 但目标代理不可用,然后将消息持久保存在磁盘上,以便在不太可能的 borker 关闭时消息将继续存在。
在翻阅 ActiveMQ 的文档后,我没有找到任何适合我的用例的答案,所以我询问这个伟大的社区,我正在寻找的东西是否真的可行。
【问题讨论】:
标签: java activemq embedded-linux kahadb