我通常会在activemq5.4.2中看到已损坏的队列,这意味着队列格式不正确,我不得不删除kahaDB文件并退回代理以解决此问题。存储在队列中的所有消息都会丢失。如何防止这个损坏的队列而不丢失数据?
以下是经纪人的日志, 错误|无法重置批处理| org.apache.activemq.store.kahadb.KahaDBStore | ActiveMQ Broker [AMQBROKER-TEST]调度程序 java.lang.IllegalStateException:未加载PageFile 在org.apache.kahadb.page.PageFile.assertLoaded(PageFile.java:715) 在org.apache.kahadb.page.PageFile.tx(PageFile.java:239) 在org.apache.activemq.store.kahadb.KahaDBStore $ KahaDBMessageStore.resetBatching(KahaDBStore.java:510) 在org.apache.activemq.store.ProxyMessageStore.resetBatching(ProxyMessageStore.java:93) 在org.apache.activemq.broker.region.cursors.QueueStorePrefetch.resetBatch(QueueStorePrefetch.java:85) 在org.apache.activemq.broker.region.cursors.AbstractStoreCursor.fillBatch(AbstractStoreCursor.java:254) 在org.apache.activemq.broker.region.cursors.AbstractStoreCursor.reset(AbstractStoreCursor.java:108) 在org.apache.activemq.broker.region.cursors.StoreQueueCursor.reset(StoreQueueCursor.java:157) 在org.apache.activemq.broker.region.Queue.doBrowse(Queue.java:1026) 在org.apache.activemq.broker.region.Queue.expireMessages(Queue.java:783) 在org.apache.activemq.broker.region.Queue.access $ 100(Queue.java:83) 在org.apache.activemq.broker.region.Queue $ 2.run(Queue.java:123) at org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33) 在java.util.TimerThread.mainLoop(Timer.java:512) 在java.util.TimerThread.run(Timer.java:462) 信息|传输失败:java.net.SocketException:管道损坏| org.apache.activemq.broker.TransportConnection.Transport |异步异常处理程序
警告|无法注册MBean:org.apache.activemq:BrokerName = AMQBROKER-TEST,Type = Queue,Destination = _ onEvent& X171249188Y1Z 信息|传输失败:java.net.SocketException:管道损坏 信息|传输失败:java.net.SocketException:连接重置 信息|传输失败:java.io.EOFException