ActiveMQ无法启动(EOFException:null)

时间:2016-01-25 16:33:32

标签: spring apache-camel activemq

我遇到问题是使用camel和ActiveMQ启动我的春季网络应用程序。

我得到的特定错误不是很具描述性:

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$1.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 stuff no 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本地文件夹,但似乎没有任何工作,甚至将我指向正确的位置。

2 个答案:

答案 0 :(得分:1)

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

  • 的ActiveMQ-客户机的 5.13.0
  • 的ActiveMQ-核 - 的 5.7.0

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

你能直接导入 activemq-all 5.13.0 并再试一次吗?

答案 1 :(得分:0)

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

我相信KahaDB中有一个错误,您可以在Apache issues Web Page上找到有关它的信息。

我曾经遇到过这个问题,但它很奇怪,因为它似乎是随机发生的,有时它会起作用,有时会失败。

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