final MethodWriterBuilder<StringEvents> methodWriterBuilder = excerptAppender.methodWriterBuilder(StringEvents.class); methodWriterBuilder.recordHistory(true); final StringEvents events = methodWriterBuilder.build();
@Test(timeout = 10_000L) public void shouldReadQueueWithNonDefaultRollCycleWhenMetadataDeleted() throws IOException { if (OS.isWindows()) return; Path path = DirectoryUtils.tempDir("shouldReadQueueWithNonDefaultRollCycle").toPath(); path.toFile().mkdirs(); try (final ChronicleQueue queue = SingleChronicleQueueBuilder.binary(path).rollCycle(RollCycles.MINUTELY). testBlockSize().build()) { final ExcerptAppender excerptAppender = queue.acquireAppender(); final MethodWriterBuilder<StringEvents> methodWriterBuilder = excerptAppender.methodWriterBuilder(StringEvents.class); methodWriterBuilder.recordHistory(true); final StringEvents events = methodWriterBuilder.build(); for (int i = 0; i < 24; i++) { events.say(i % 2 == 0 ? "hello" : "goodbye"); } } Files.list(path).filter(f -> f.getFileName().toString().endsWith(SingleTableStore.SUFFIX)).findFirst().ifPresent(p -> p.toFile().delete()); waitForGcCycle(); new ChronicleReader().withBasePath(path).withMessageSink(capturedOutput::add).execute(); assertFalse(capturedOutput.isEmpty()); }
@Before public void before() { dataDir = DirectoryUtils.tempDir(ChronicleReaderTest.class.getSimpleName()).toPath(); try (final ChronicleQueue queue = SingleChronicleQueueBuilder.binary(dataDir) .testBlockSize().build()) { final ExcerptAppender excerptAppender = queue.acquireAppender(); final MethodWriterBuilder<StringEvents> methodWriterBuilder = excerptAppender.methodWriterBuilder(StringEvents.class); methodWriterBuilder.recordHistory(true); final StringEvents events = methodWriterBuilder.build(); for (int i = 0; i < 24; i++) { events.say(i % 2 == 0 ? "hello" : "goodbye"); } } }
public static void main(String[] args) { SingleChronicleQueue outQueue = SingleChronicleQueueBuilder.binary("target/" + "monitor") .rollCycle(RollCycles.TEST_SECONDLY).build(); ExcerptAppender outQueueAppender = outQueue.acquireAppender(); HeartbeatListener heartbeatWriter = outQueueAppender.methodWriterBuilder(HeartbeatListener.class).methodWriterListener((m, a) -> validateAll(a)).recordHistory(true).build(); Monitor.addPeriodicUpdateSource(10, () -> currentTimeMillis -> { outQueueAppender.pretouch(); }); long lastHB = 0; while (true) { if (System.currentTimeMillis() - lastHB > 1) { // write a hb to the queue MessageHistory.get().reset(); Heartbeat heartBeat = new Heartbeat(UUID.randomUUID().toString()); heartbeatWriter.heartbeat(heartBeat); lastHB = System.currentTimeMillis(); } } }
private void generateTestData(final ChronicleQueue inputQueue, final ChronicleQueue outputQueue) { final First first = inputQueue.acquireAppender(). methodWriterBuilder(First.class).recordHistory(true).build(); first.say("one"); first.say("two"); first.say("three"); final LoggingFirst loggingFirst = new LoggingFirst(outputQueue.acquireAppender(). methodWriterBuilder(Second.class).build()); final MethodReader reader = inputQueue.createTailer(). methodReaderBuilder().build(loggingFirst); assertThat(reader.readOne(), is(true)); assertThat(reader.readOne(), is(true)); // roll queue file clock.addAndGet(TimeUnit.DAYS.toMillis(2)); assertThat(reader.readOne(), is(true)); assertThat(reader.readOne(), is(false)); }
@Test(timeout = 10_000L) public void shouldReadQueueWithNonDefaultRollCycle() { if (OS.isWindows()) return; Path path = DirectoryUtils.tempDir("shouldReadQueueWithNonDefaultRollCycle").toPath(); path.toFile().mkdirs(); try (final ChronicleQueue queue = SingleChronicleQueueBuilder.binary(path).rollCycle(RollCycles.MINUTELY). testBlockSize().build()) { final ExcerptAppender excerptAppender = queue.acquireAppender(); final MethodWriterBuilder<StringEvents> methodWriterBuilder = excerptAppender.methodWriterBuilder(StringEvents.class); methodWriterBuilder.recordHistory(true); final StringEvents events = methodWriterBuilder.build(); for (int i = 0; i < 24; i++) { events.say(i % 2 == 0 ? "hello" : "goodbye"); } } new ChronicleReader().withBasePath(path).withMessageSink(capturedOutput::add).execute(); assertFalse(capturedOutput.isEmpty()); }