我想在生成消息的服务器和接收消息的许多客户端之间建立基于发布者-订阅者的通信协议(protocol)。经过一番研究后,我决定使用 ActiveMQ。我查看了一些教程和 ActiveMQ 站点,并按如下方式设置代理:
BrokerService broker = new BrokerService();
broker.setPersistent(false);
broker.addConnector("tcp://localhost:61616");
broker.start();
我只需要消息传递功能,不需要数据库持久性或类似功能。但是,当我启动应用程序时,无论配置如何,都会创建一个 activemq-data 文件夹。这反过来会在我下次启动代理时导致异常。
SEVERE: Failed to start ActiveMQ JMS Message Broker. Reason: java.io.EOFException: Chunk stream does not exist at page: 0
这是一个错误还是我没有正确设置代理(使用 ActiveMQ 5.4.1)?如何禁用持久性,以便不创建额外的数据存储?另外,我更喜欢在 Java 应用程序中配置代理,而不是通过 xml 文件。
干杯, 最大
最佳答案
这不是正常行为,而是 KahaDB(Activemq 中的默认持久性存储)中的一个错误
您可以查看 Bug 2935 of ActiveMQ 的信息.
您可以通过选择不同的持久性引擎来解决这个问题,尽管我奇怪地遇到过这个问题几次,然后它就消失了
关于java - ActiveMQ 没有持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3951220/