ActiveMQ 启动失败(EOFException: null)

ActiveMQ fails to start (EOFException: null)

我在使用 camel 和 ActiveMQ 启动我的 spring 网络应用程序时遇到问题。

我遇到的特定错误描述性不强:

16:18:53.552 [localhost-startStop-1] ERROR o.a.a.b.BrokerService - Failed to start Apache ActiveMQ ([activemq.myworkingdomain.com, ID:Ricardos-MacBook-Air.local-65257-1453738732697-0:2], {})
java.io.EOFException: null
at java.io.DataInputStream.readBoolean(DataInputStream.java:244) ~[na:1.8.0_60]
at org.apache.activemq.openwire.v11.SubscriptionInfoMarshaller.looseUnmarshal(SubscriptionInfoMarshaller.java:133) ~[activemq-client-5.13.0.jar:5.13.0]
at org.apache.activemq.openwire.OpenWireFormat.doUnmarshal(OpenWireFormat.java:366) ~[activemq-client-5.13.0.jar:5.13.0]
at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:277) ~[activemq-client-5.13.0.jar:5.13.0]
at org.apache.activemq.store.kahadb.KahaDBStore$KahaDBTopicMessageStore.execute(KahaDBStore.java:755) ~[activemq-core-5.7.0.jar:5.7.0]
at org.apache.kahadb.page.Transaction.execute(Transaction.java:769) ~[kahadb-5.7.0.jar:5.7.0]
at org.apache.activemq.store.kahadb.KahaDBStore$KahaDBTopicMessageStore.getAllSubscriptions(KahaDBStore.java:749) ~[activemq-core-5.7.0.jar:5.7.0]
at org.apache.activemq.store.kahadb.KahaDBStore$KahaDBTopicMessageStore.<init>(KahaDBStore.java:663) ~[activemq-core-5.7.0.jar:5.7.0]
at org.apache.activemq.store.kahadb.KahaDBStore.createTopicMessageStore(KahaDBStore.java:920) ~[activemq-core-5.7.0.jar:5.7.0]
at org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter.createTopicMessageStore(KahaDBPersistenceAdapter.java:100) ~[activemq-core-5.7.0.jar:5.7.0]

我坚持 java 和简单的 spring 东西没有 xml:

@Bean
public CamelContext camelContext() {
    final CamelContext camelContext = new DefaultCamelContext();
    camelContext.addComponent("activemq", activeMQComponent());

    try {
        CamelConfigurator.addRoutesToCamel(camelContext);
        camelContext.start();
    } catch (final Exception e) {
        LOGGER.error("Failed to start the camel context", e);
    }
    LOGGER.info("Started the Camel context and components");
    return camelContext;
}

@Bean
public ActiveMQComponent activeMQComponent() {
    final ActiveMQComponent activeMQComponent = new ActiveMQComponent();
    activeMQComponent.setConfiguration(jmsConfiguration());
    activeMQComponent.setTransacted(true);
    activeMQComponent.setCacheLevelName("CACHE_CONSUMER");
    return activeMQComponent;
}

@Bean
public JmsConfiguration jmsConfiguration() {
    final JmsConfiguration jmsConfiguration = new JmsConfiguration(pooledConnectionFactory());
    jmsConfiguration.setConcurrentConsumers(CONCURRENT_CONSUMERS);
    return jmsConfiguration;
}

@Bean
public PooledConnectionFactory pooledConnectionFactory() {
    final PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory(
            activeMQConnectionFactory());
    pooledConnectionFactory.setMaxConnections(MAX_CONNECTIONS_TO_POOL_FACTORY);
    // pooledConnectionFactory.start();
    return pooledConnectionFactory;
}

@Bean
public ActiveMQConnectionFactory activeMQConnectionFactory() {
    return new ActiveMQConnectionFactory(username, password, activeMQBrokerURL);
}

我一直在尝试更改加载路径的顺序以及其中包含的内容,删除 kahadb 本地文件夹,但似乎没有任何效果,甚至无法将我指向正确的位置。

根据您的堆栈跟踪,您似乎遇到了 KahaDB(Apache ActiveMQ 的默认持久性引擎)的问题。

我认为 KahaDB 中有一个错误,您可以在 Apache issues Web Page.

上找到有关它的信息

我遇到过一次这个问题,但很奇怪,因为它似乎是随机发生的,有时有效,有时失败。

我通过为 ActiveMQ 选择不同的持久性引擎设法解决了这个问题。也许你可以试一试,然后告诉我它是否适合你。希望这些信息可以帮到你。

您的堆栈跟踪显示您的应用程序正在使用

  • activemq-client-5.13.0
  • activemq-core-5.7.0

我很确定版本不匹配是导致此错误的原因。

你可以只导入 activemq-all 5.13.0 然后再试一次吗?