让我说我有两个线程想要使用相同的Chronicle队列进行通信, 作家:
SingleChronicleQueue queue_en = SingleChronicleQueueBuilder.binary(path).build();
ExcerptAppender appender = queue_en.acquireAppender();
....
阅读器:
SingleChronicleQueue queue_en = SingleChronicleQueueBuilder.binary(path).build();
ExcerptTailer tailer = queue_en.createTailer();
...
现在,当我启动我的应用程序时,我得到了:
[Thread-1] n.o.c.q.i.t.SingleTableStore Failed to acquire a lock on the table store file. Retrying
Exception in thread "Thread-1" java.lang.NoSuchMethodError: net.openhft.chronicle.core.util.Time.sleep(JLjava/util/concurrent/TimeUnit;)V
at net.openhft.chronicle.queue.impl.table.SingleTableStore.doWithExclusiveLock(SingleTableStore.java:153)
at net.openhft.chronicle.queue.impl.table.SingleTableBuilder.build(SingleTableBuilder.java:111)
at net.openhft.chronicle.queue.impl.single.SingleChronicleQueueBuilder.initializeMetadata(SingleChronicleQueueBuilder.java:430)
at net.openhft.chronicle.queue.impl.single.SingleChronicleQueueBuilder.preBuild(SingleChronicleQueueBuilder.java:995)
at net.openhft.chronicle.queue.impl.single.SingleChronicleQueueBuilder.build(SingleChronicleQueueBuilder.java:328)
at
....
请问您如何正确进行操作?
答案 0 :(得分:0)
这意味着您使用的core
与queue
的不兼容版本
我建议您使用编年史表来确保所有版本均经过测试。
以下是一个示例
https://github.com/OpenHFT/Chronicle-Queue-Demo/tree/master/order-processor
<dependencyManagement>
<dependencies>
<dependency>
<groupId>net.openhft</groupId>
<artifactId>third-party-bom</artifactId>
<type>pom</type>
<version>3.6.15</version>
<scope>import</scope>
</dependency>
<dependency>
<groupId>net.openhft</groupId>
<artifactId>chronicle-bom</artifactId>
<version>2.17.482</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>net.openhft</groupId>
<artifactId>chronicle-queue</artifactId>
</dependency>