gpt4 book ai didi

java - 使用 jdbcPersistenceAdapter 重新启动嵌入式 activeMQ 代理时出现异常

转载 作者:搜寻专家 更新时间:2023-11-01 03:06:07 24 4
gpt4 key购买 nike

使用 ActiveMQ 5.9.0,我有以下代理配置:

<amq:broker id="broker" useShutdownHook="false" persistent="true">
<amq:persistenceAdapter>
<amq:jdbcPersistenceAdapter dataSource="#dataSource">
</amq:jdbcPersistenceAdapter>
</amq:persistenceAdapter>
<amq:transportConnectors>
<amq:transportConnector uri="${broker.url}" />
</amq:transportConnectors>
</amq:broker>

如果代理启动时数据库中已经有消息,我会得到异常:

java.lang.ClassCastException: org.apache.activemq.command.WireFormatInfo cannot be cast to org.apache.activemq.command.Message at org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.getLastMessageBrokerSequenceId(JDBCPersistenceAdapter.java:265) at org.apache.activemq.broker.region.DestinationFactoryImpl.getLastMessageBrokerSequenceId(DestinationFactoryImpl.java:147) at org.apache.activemq.broker.region.RegionBroker.(RegionBroker.java:128) at org.apache.activemq.broker.jmx.ManagedRegionBroker.(ManagedRegionBroker.java:111) at org.apache.activemq.broker.BrokerService.createRegionBroker(BrokerService.java:2172) at org.apache.activemq.broker.BrokerService.createRegionBroker(BrokerService.java:2165) at org.apache.activemq.broker.BrokerService.createBroker(BrokerService.java:2122) at org.apache.activemq.broker.BrokerService.getBroker(BrokerService.java:906) at org.apache.activemq.broker.BrokerService.getAdminConnectionContext(BrokerService.java:2393) at org.apache.activemq.broker.BrokerService.startVirtualConsumerDestinations(BrokerService.java:2533) at org.apache.activemq.broker.BrokerService.startDestinations(BrokerService.java:2384) at org.apache.activemq.broker.BrokerService.doStartBroker(BrokerService.java:640) at org.apache.activemq.broker.BrokerService.startBroker(BrokerService.java:632) at org.apache.activemq.broker.BrokerService.start(BrokerService.java:568) at org.apache.activemq.broker.BrokerService.autoStart(BrokerService.java:524) at org.apache.activemq.broker.BrokerService.postConstruct(BrokerService.java:511)

在我看来,用于编码消息的格式可能与解码时使用的格式不同。知道为什么会这样吗?

最佳答案

问题是 oracle 驱动程序版本。当从数据库中读取 blob 列时,数据已损坏。该问题很难重现(在收到消息时停止应用程序),因此切换到 amq 5.5.0 是误报。我使用的是 ojdbc 10.1.0.2.0 并切换到 ojdbc6 11.2.0.3 解决了这个问题。

关于java - 使用 jdbcPersistenceAdapter 重新启动嵌入式 activeMQ 代理时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21760679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com