/** * @deprecated to be remove in version 4.6 or later use {@link ChronicleQueue#acquireAppender()} */ @NotNull @Deprecated default ExcerptAppender createAppender() { return acquireAppender(); }
@NotNull public JDBCStatement createWriter() { return in.acquireAppender() .methodWriterBuilder(JDBCStatement.class) .recordHistory(true) .get(); }
@NotNull public <T> T inputWriter(Class<T> tClass) { ChronicleQueue queue = inputQueue(); return queue.acquireAppender() .methodWriterBuilder(tClass) .recordHistory(true) .onClose(queue) .get(); } }
private void write(@NotNull ChronicleQueue aChronicle, int messages) { final ExcerptAppender myAppender = aChronicle.acquireAppender(); for (int myCount = 0; myCount < messages; myCount++) { myAppender.writeDocument(aMarshallable -> aMarshallable.write().bytes(Long.toString(currentTimeMillis()).getBytes(StandardCharsets.UTF_8))); // System.out.println(Long.toHexString(myAppender.lastIndexAppended())); } } }
private void doWrite(ChronicleQueue queue, BiConsumer<PersonListener, ChronicleQueue> action) { ExcerptAppender appender = queue.acquireAppender(); PersonListener proxy = appender.methodWriterBuilder(PersonListener.class).get(); action.accept(proxy, queue); }
private static void writeMessage(final int j, final ChronicleQueue queue) { final ExcerptAppender appender = queue.acquireAppender(); appender.writeBytes(b -> b.writeInt(j)); }
private void appendToQueue(final ChronicleQueue queue) { for (int i = 0; i < 31; i++) { final ExcerptAppender appender = queue.acquireAppender(); if (queue.isClosed()) return; try (final DocumentContext dc = appender.writingDocument()) { dc.wire().write("foo"); } } }
@Test(expected = IllegalStateException.class) //: no messages written public void testNoMessagesWritten() { try (final ChronicleQueue chronicle = builder(getTmpDir(), this.wireType) .build()) { final ExcerptAppender appender = chronicle.acquireAppender(); appender.lastIndexAppended(); } }
@Test public void tailerRollBackTest() { final File source = DirectoryUtils.tempDir("testCopyQueue-source"); try (final ChronicleQueue q = binary(source).build()) { try (DocumentContext dc = q.acquireAppender().writingDocument()) { dc.wire().write("hello").text("hello-world"); } try (DocumentContext dc = q.acquireAppender().writingDocument()) { dc.wire().write("hello2").text("hello-world-2"); } } }
@Test(expected = IllegalStateException.class) public void testLastWrittenIndexPerAppenderNoData() { try (final ChronicleQueue chronicle = builder(getTmpDir(), this.wireType) .build()) { final ExcerptAppender appender = chronicle.acquireAppender(); appender.lastIndexAppended(); Assert.fail(); } }
@Test public void testLastAcknowledge() { String name = OS.getTarget() + "/testLastAcknowledge-" + System.nanoTime(); try (ChronicleQueue q = SingleChronicleQueueBuilder.single(name).testBlockSize().build()) { q.acquireAppender().writeText("Hello World"); } try (ChronicleQueue q = SingleChronicleQueueBuilder.single(name).testBlockSize().build()) { assertEquals(-1, q.lastAcknowledgedIndexReplicated()); } } }
@Test public void testTextReadWrite() { File tmpDir = getTmpDir(); try (final ChronicleQueue queue = builder(tmpDir, wireType) .build()) { queue.acquireAppender().writeText("hello world"); Assert.assertEquals("hello world", queue.createTailer().readText()); } }
@Test public void shouldHandleLargeEpoch() { try (final ChronicleQueue chronicle = builder(getTmpDir(), this.wireType) .epoch(System.currentTimeMillis()) .epoch(1284739200000L) .rollCycle(DAILY) .build()) { final ExcerptAppender appender = chronicle.acquireAppender(); appender.writeDocument(wire -> wire.write(() -> "key").text("value=v")); final ExcerptTailer excerptTailer = chronicle.createTailer().toStart(); assertThat(excerptTailer.readingDocument().isPresent(), is(true)); } }
@Test public void shouldBeAbleToReadFromQueueWithNonZeroEpoch() { try (final ChronicleQueue chronicle = builder(getTmpDir(), this.wireType) .epoch(System.currentTimeMillis()) .rollCycle(RollCycles.DAILY) .build()) { final ExcerptAppender appender = chronicle.acquireAppender(); appender.writeDocument(wire -> wire.write(() -> "key").text("value=v")); Assert.assertTrue(appender.cycle() == 0); final ExcerptTailer excerptTailer = chronicle.createTailer().toStart(); assertThat(excerptTailer.readingDocument().isPresent(), is(true)); } }
private void createQueueAndWriteData(TimeProvider timeProvider, File path) { final ChronicleQueue queue = SingleChronicleQueueBuilder .binary(path) .testBlockSize() .rollCycle(RollCycles.TEST_DAILY) .timeProvider(timeProvider) .build(); ExcerptAppender excerptAppender = queue.acquireAppender(); try (DocumentContext dc = excerptAppender.writingDocument(false)) { dc.wire().write(() -> "test").int64(0); } } }
@Test public void shouldReadBackwardFromEndOfQueueWhenDirectionIsSetAfterMoveToEnd() { try (final ChronicleQueue queue = builder(getTmpDir(), this.wireType) .rollCycle(TEST2_DAILY) .build()) { final ExcerptAppender appender = queue.acquireAppender(); appender.writeDocument(w -> w.writeEventName("hello").text("world")); final ExcerptTailer tailer = queue.createTailer(); tailer.toEnd(); tailer.direction(TailerDirection.BACKWARD); assertThat(tailer.readingDocument().isPresent(), is(true)); } }
@Test public void testLastWrittenIndexPerAppender() { try (final ChronicleQueue queue = builder(getTmpDir(), this.wireType) .build()) { final ExcerptAppender appender = queue.acquireAppender(); appender.writeDocument(wire -> wire.write(() -> "key").text("test")); Assert.assertEquals(0, queue.rollCycle().toSequenceNumber(appender.lastIndexAppended())); } }
@Test(expected = IllegalStateException.class) public void shouldBlowUpIfTryingToCreateQueueWithUnparseableRollCycle() { File tmpDir = getTmpDir(); try (final ChronicleQueue queue = builder(tmpDir, wireType).rollCycle(new RollCycleDefaultingTest.MyRollcycle()).build()) { try (DocumentContext documentContext = queue.acquireAppender().writingDocument()) { documentContext.wire().write("somekey").text("somevalue"); } } try (final ChronicleQueue ignored = builder(tmpDir, wireType).rollCycle(HOURLY).build()) { } }
@Test public void testLastIndexAppended() { try (ChronicleQueue chronicle = builder(getTmpDir(), this.wireType) .build()) { ExcerptAppender appender = chronicle.acquireAppender(); appender.writeDocument(w -> w.writeEventName("hello").text("world0")); final long nextIndexToWrite = appender.lastIndexAppended() + 1; appender.writeDocument(w -> w.getValueOut().bytes(new byte[0])); // System.out.println(chronicle.dump()); Assert.assertEquals(nextIndexToWrite, appender.lastIndexAppended()); } }
@Test public void shouldOverrideDifferentEpoch() { File tmpDir = getTmpDir(); try (final ChronicleQueue queue = builder(tmpDir, wireType).rollCycle(TEST_SECONDLY).epoch(100).build()) { try (DocumentContext documentContext = queue.acquireAppender().writingDocument()) { documentContext.wire().write("somekey").text("somevalue"); } } try (final ChronicleQueue ignored = builder(tmpDir, wireType).rollCycle(TEST_SECONDLY).epoch(10).build()) { assertEquals(100, ((SingleChronicleQueue) ignored).epoch()); } }