【问题标题】:ActiveMQ without persistence没有持久性的 ActiveMQ
【发布时间】:2011-04-26 11:00:30
【问题描述】:

我想在产生消息的服务器和接收消息的许多客户端之间建立一个基于发布者-订阅者的通信协议。经过一番研究,我决定使用 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 文件。

干杯, 最大

【问题讨论】:

  • 现在我找到了一种解决方法,可以在每次启动代理/发布者时删除文件夹。如果有人能对这个问题有所了解,那就太好了。

标签: java configuration activemq messagebroker


【解决方案1】:

您还可以为您的消息生产者设置传递模式。

messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

JMS 允许的整数值为:

    int NON_PERSISTENT = 1;
    int PERSISTENT = 2;

【讨论】:

    【解决方案2】:

    这不是正常行为,而是 KahaDB 中的一个错误(Activemq 中的默认持久存储)

    您可以在Bug 2935 of ActiveMQ 上查看信息。

    你可以通过选择不同的持久化引擎来解决这个问题,虽然我奇怪地遇到过几次这个问题然后它就消失了

    【讨论】:

    • 感谢您的回复。更改持久性存储会为我不打算使用的东西添加另一个依赖项。
    • 所以基本上你不想要持久性并且它不采用代码配置。我读到的是,当设置持久性适配器时,该设置将被忽略。也许您可以在开始之前尝试清除适配器(如果默认情况下已设置一个,尽管查看源代码,它使用 MemoryPersistence)?除此之外,我会说这是一个需要在 jira 中注册的错误:s
    • 正如我所说,我不想引入另一个依赖项(用于 MemoryPersistence)。我想我只需要等到 5.5 发布。错误报告中的帖子表明该错误将在此版本中修复。
    • 看起来这在 5.4.2 中已修复。
    【解决方案3】:

    在我的情况下,从以下目录中删除所有 kahadb 数据文件有帮助:

    $ ls /var/lib/activemq/main/data$ cd kahadb
    db-1.log  db.data  db.redo  lock
    

    然后:

    sudo service activemq restart
    

    一切恢复正常

    【讨论】:

      【解决方案4】:

      如果使用 maven pom,则切换到 `

      <dependency>
          <groupId>org.apache.activemq</groupId>
          <artifactId>activemq-all</artifactId>
          <version>5.8.0</version>
      </dependency>
      

      ` 也不要忘记清除 KahaDB 和 Scheduler 中的内容。 如果不需要,它还有助于关闭调度程序。

      【讨论】:

        猜你喜欢
        • 2019-01-27
        • 2015-08-22
        • 2016-03-22
        • 1970-01-01
        • 1970-01-01
        • 2014-01-22
        • 2011-05-29
        • 1970-01-01
        • 2016-01-14
        相关资源
        最近更新 更多