Search in sources :

Example 1 with RetryableSender

use of org.komamitsu.fluency.sender.RetryableSender in project fluency by komamitsu.

the class FluencyTest method testDefaultFluencyWithSslAndComplexConfig.

@Test
public void testDefaultFluencyWithSslAndComplexConfig() throws IOException {
    Fluency fluency = null;
    try {
        String tmpdir = System.getProperty("java.io.tmpdir");
        assertThat(tmpdir, is(notNullValue()));
        Fluency.Config config = new Fluency.Config().setSslEnabled(true).setFlushIntervalMillis(200).setMaxBufferSize(Long.MAX_VALUE).setBufferChunkInitialSize(7 * 1024 * 1024).setBufferChunkRetentionSize(13 * 1024 * 1024).setJvmHeapBufferMode(true).setSenderMaxRetryCount(99).setAckResponseMode(true).setWaitUntilBufferFlushed(42).setWaitUntilFlusherTerminated(24).setFileBackupDir(tmpdir);
        fluency = Fluency.defaultFluency(Arrays.asList(new InetSocketAddress("333.333.333.333", 11111), new InetSocketAddress("444.444.444.444", 22222)), config);
        assertThat(fluency.getFlusher().getSender(), instanceOf(RetryableSender.class));
        RetryableSender retryableSender = (RetryableSender) fluency.getFlusher().getSender();
        assertThat(retryableSender.getRetryStrategy(), instanceOf(ExponentialBackOffRetryStrategy.class));
        ExponentialBackOffRetryStrategy retryStrategy = (ExponentialBackOffRetryStrategy) retryableSender.getRetryStrategy();
        assertThat(retryStrategy.getMaxRetryCount(), is(99));
        assertThat(retryStrategy.getBaseIntervalMillis(), is(400));
        assertThat(retryableSender.getBaseSender(), instanceOf(MultiSender.class));
        MultiSender multiSender = (MultiSender) retryableSender.getBaseSender();
        assertThat(multiSender.getSenders().size(), is(2));
        assertThat(multiSender.getSenders().get(0), instanceOf(SSLSender.class));
        {
            SSLSender sender = (SSLSender) multiSender.getSenders().get(0);
            assertThat(sender.getHost(), is("333.333.333.333"));
            assertThat(sender.getPort(), is(11111));
            assertThat(sender.getConnectionTimeoutMilli(), is(5000));
            assertThat(sender.getReadTimeoutMilli(), is(5000));
            FailureDetector failureDetector = sender.getFailureDetector();
            assertThat(failureDetector.getFailureIntervalMillis(), is(3 * 1000));
            assertThat(failureDetector.getFailureDetectStrategy(), instanceOf(PhiAccrualFailureDetectStrategy.class));
            assertThat(failureDetector.getHeartbeater(), instanceOf(SSLHeartbeater.class));
            assertThat(failureDetector.getHeartbeater().getHost(), is("333.333.333.333"));
            assertThat(failureDetector.getHeartbeater().getPort(), is(11111));
            assertThat(failureDetector.getHeartbeater().getIntervalMillis(), is(1000));
        }
        assertThat(multiSender.getSenders().get(1), instanceOf(SSLSender.class));
        {
            SSLSender sender = (SSLSender) multiSender.getSenders().get(1);
            assertThat(sender.getHost(), is("444.444.444.444"));
            assertThat(sender.getPort(), is(22222));
            assertThat(sender.getConnectionTimeoutMilli(), is(5000));
            assertThat(sender.getReadTimeoutMilli(), is(5000));
            FailureDetector failureDetector = sender.getFailureDetector();
            assertThat(failureDetector.getFailureIntervalMillis(), is(3 * 1000));
            assertThat(failureDetector.getFailureDetectStrategy(), instanceOf(PhiAccrualFailureDetectStrategy.class));
            assertThat(failureDetector.getHeartbeater(), instanceOf(SSLHeartbeater.class));
            assertThat(failureDetector.getHeartbeater().getHost(), is("444.444.444.444"));
            assertThat(failureDetector.getHeartbeater().getPort(), is(22222));
            assertThat(failureDetector.getHeartbeater().getIntervalMillis(), is(1000));
        }
    } finally {
        if (fluency != null) {
            fluency.close();
        }
    }
}
Also used : SSLSender(org.komamitsu.fluency.sender.SSLSender) InetSocketAddress(java.net.InetSocketAddress) ExponentialBackOffRetryStrategy(org.komamitsu.fluency.sender.retry.ExponentialBackOffRetryStrategy) FailureDetector(org.komamitsu.fluency.sender.failuredetect.FailureDetector) MultiSender(org.komamitsu.fluency.sender.MultiSender) RetryableSender(org.komamitsu.fluency.sender.RetryableSender) Test(org.junit.Test)

Example 2 with RetryableSender

use of org.komamitsu.fluency.sender.RetryableSender in project fluency by komamitsu.

the class FluencyTest method testDefaultFluencyWithComplexConfig.

@Test
public void testDefaultFluencyWithComplexConfig() throws IOException {
    Fluency fluency = null;
    try {
        String tmpdir = System.getProperty("java.io.tmpdir");
        assertThat(tmpdir, is(notNullValue()));
        Fluency.Config config = new Fluency.Config().setFlushIntervalMillis(200).setMaxBufferSize(Long.MAX_VALUE).setBufferChunkInitialSize(7 * 1024 * 1024).setBufferChunkRetentionSize(13 * 1024 * 1024).setJvmHeapBufferMode(true).setSenderMaxRetryCount(99).setAckResponseMode(true).setWaitUntilBufferFlushed(42).setWaitUntilFlusherTerminated(24).setFileBackupDir(tmpdir);
        fluency = Fluency.defaultFluency(Arrays.asList(new InetSocketAddress("333.333.333.333", 11111), new InetSocketAddress("444.444.444.444", 22222)), config);
        assertThat(fluency.getBuffer(), instanceOf(PackedForwardBuffer.class));
        PackedForwardBuffer buffer = (PackedForwardBuffer) fluency.getBuffer();
        assertThat(buffer.getMaxBufferSize(), is(Long.MAX_VALUE));
        assertThat(buffer.getFileBackupDir(), is(tmpdir));
        assertThat(buffer.bufferFormatType(), is("packed_forward"));
        assertThat(buffer.getChunkRetentionTimeMillis(), is(1000));
        assertThat(buffer.getChunkExpandRatio(), is(2f));
        assertThat(buffer.getChunkInitialSize(), is(7 * 1024 * 1024));
        assertThat(buffer.getChunkRetentionSize(), is(13 * 1024 * 1024));
        assertThat(buffer.getJvmHeapBufferMode(), is(true));
        assertThat(buffer.isAckResponseMode(), is(true));
        assertThat(fluency.getFlusher(), instanceOf(AsyncFlusher.class));
        AsyncFlusher flusher = (AsyncFlusher) fluency.getFlusher();
        assertThat(flusher.isTerminated(), is(false));
        assertThat(flusher.getFlushIntervalMillis(), is(200));
        assertThat(flusher.getWaitUntilBufferFlushed(), is(42));
        assertThat(flusher.getWaitUntilTerminated(), is(24));
        assertThat(flusher.getSender(), instanceOf(RetryableSender.class));
        RetryableSender retryableSender = (RetryableSender) flusher.getSender();
        assertThat(retryableSender.getRetryStrategy(), instanceOf(ExponentialBackOffRetryStrategy.class));
        ExponentialBackOffRetryStrategy retryStrategy = (ExponentialBackOffRetryStrategy) retryableSender.getRetryStrategy();
        assertThat(retryStrategy.getMaxRetryCount(), is(99));
        assertThat(retryStrategy.getBaseIntervalMillis(), is(400));
        assertThat(retryableSender.getBaseSender(), instanceOf(MultiSender.class));
        MultiSender multiSender = (MultiSender) retryableSender.getBaseSender();
        assertThat(multiSender.getSenders().size(), is(2));
        assertThat(multiSender.getSenders().get(0), instanceOf(TCPSender.class));
        {
            TCPSender sender = (TCPSender) multiSender.getSenders().get(0);
            assertThat(sender.getHost(), is("333.333.333.333"));
            assertThat(sender.getPort(), is(11111));
            assertThat(sender.getConnectionTimeoutMilli(), is(5000));
            assertThat(sender.getReadTimeoutMilli(), is(5000));
            FailureDetector failureDetector = sender.getFailureDetector();
            assertThat(failureDetector.getFailureIntervalMillis(), is(3 * 1000));
            assertThat(failureDetector.getFailureDetectStrategy(), instanceOf(PhiAccrualFailureDetectStrategy.class));
            assertThat(failureDetector.getHeartbeater(), instanceOf(TCPHeartbeater.class));
            assertThat(failureDetector.getHeartbeater().getHost(), is("333.333.333.333"));
            assertThat(failureDetector.getHeartbeater().getPort(), is(11111));
            assertThat(failureDetector.getHeartbeater().getIntervalMillis(), is(1000));
        }
        assertThat(multiSender.getSenders().get(1), instanceOf(TCPSender.class));
        {
            TCPSender sender = (TCPSender) multiSender.getSenders().get(1);
            assertThat(sender.getHost(), is("444.444.444.444"));
            assertThat(sender.getPort(), is(22222));
            assertThat(sender.getConnectionTimeoutMilli(), is(5000));
            assertThat(sender.getReadTimeoutMilli(), is(5000));
            FailureDetector failureDetector = sender.getFailureDetector();
            assertThat(failureDetector.getFailureIntervalMillis(), is(3 * 1000));
            assertThat(failureDetector.getFailureDetectStrategy(), instanceOf(PhiAccrualFailureDetectStrategy.class));
            assertThat(failureDetector.getHeartbeater(), instanceOf(TCPHeartbeater.class));
            assertThat(failureDetector.getHeartbeater().getHost(), is("444.444.444.444"));
            assertThat(failureDetector.getHeartbeater().getPort(), is(22222));
            assertThat(failureDetector.getHeartbeater().getIntervalMillis(), is(1000));
        }
    } finally {
        if (fluency != null) {
            fluency.close();
        }
    }
}
Also used : InetSocketAddress(java.net.InetSocketAddress) PackedForwardBuffer(org.komamitsu.fluency.buffer.PackedForwardBuffer) ExponentialBackOffRetryStrategy(org.komamitsu.fluency.sender.retry.ExponentialBackOffRetryStrategy) FailureDetector(org.komamitsu.fluency.sender.failuredetect.FailureDetector) AsyncFlusher(org.komamitsu.fluency.flusher.AsyncFlusher) MultiSender(org.komamitsu.fluency.sender.MultiSender) RetryableSender(org.komamitsu.fluency.sender.RetryableSender) TCPSender(org.komamitsu.fluency.sender.TCPSender) MockTCPSender(org.komamitsu.fluency.sender.MockTCPSender) Test(org.junit.Test)

Example 3 with RetryableSender

use of org.komamitsu.fluency.sender.RetryableSender in project fluency by komamitsu.

the class FluencyTest method assertDefaultSender.

private void assertDefaultSender(Sender sender, String expectedHost, int expectedPort, Class<? extends NetworkSender> expectedBaseClass) {
    assertThat(sender, instanceOf(RetryableSender.class));
    RetryableSender retryableSender = (RetryableSender) sender;
    assertDefaultRetryableSender(retryableSender, expectedBaseClass);
    NetworkSender networkSender = (NetworkSender) retryableSender.getBaseSender();
    assertThat(networkSender.getHost(), is(expectedHost));
    assertThat(networkSender.getPort(), is(expectedPort));
    assertThat(networkSender.getConnectionTimeoutMilli(), is(5000));
    assertThat(networkSender.getReadTimeoutMilli(), is(5000));
    FailureDetector failureDetector = networkSender.getFailureDetector();
    assertThat(failureDetector, is(nullValue()));
}
Also used : FailureDetector(org.komamitsu.fluency.sender.failuredetect.FailureDetector) NetworkSender(org.komamitsu.fluency.sender.NetworkSender) RetryableSender(org.komamitsu.fluency.sender.RetryableSender)

Example 4 with RetryableSender

use of org.komamitsu.fluency.sender.RetryableSender in project fluency by komamitsu.

the class Fluency method buildDefaultFluency.

private static Fluency buildDefaultFluency(Sender.Instantiator baseSenderConfig, Config config) {
    PackedForwardBuffer.Config bufferConfig = new PackedForwardBuffer.Config();
    ExponentialBackOffRetryStrategy.Config retryStrategyConfig = new ExponentialBackOffRetryStrategy.Config();
    AsyncFlusher.Config flusherConfig = new AsyncFlusher.Config();
    if (config != null) {
        if (config.getMaxBufferSize() != null) {
            bufferConfig.setMaxBufferSize(config.getMaxBufferSize());
        }
        if (config.getBufferChunkInitialSize() != null) {
            bufferConfig.setChunkInitialSize(config.getBufferChunkInitialSize());
        }
        if (config.getBufferChunkRetentionSize() != null) {
            bufferConfig.setChunkRetentionSize(config.getBufferChunkRetentionSize());
        }
        bufferConfig.setAckResponseMode(config.isAckResponseMode());
        if (config.getFileBackupDir() != null) {
            bufferConfig.setFileBackupDir(config.getFileBackupDir());
        }
        if (config.getJvmHeapBufferMode() != null) {
            bufferConfig.setJvmHeapBufferMode(config.jvmHeapBufferMode);
        }
        if (config.getFlushIntervalMillis() != null) {
            flusherConfig.setFlushIntervalMillis(config.getFlushIntervalMillis());
        }
        if (config.getWaitUntilBufferFlushed() != null) {
            flusherConfig.setWaitUntilBufferFlushed(config.getWaitUntilBufferFlushed());
        }
        if (config.getWaitUntilFlusherTerminated() != null) {
            flusherConfig.setWaitUntilTerminated(config.getWaitUntilFlusherTerminated());
        }
        if (config.getSenderMaxRetryCount() != null) {
            retryStrategyConfig.setMaxRetryCount(config.getSenderMaxRetryCount());
        }
    }
    RetryableSender.Config senderConfig = new RetryableSender.Config(baseSenderConfig).setRetryStrategyConfig(retryStrategyConfig);
    if (config != null) {
        if (config.getSenderErrorHandler() != null) {
            senderConfig.setSenderErrorHandler(config.getSenderErrorHandler());
        }
    }
    RetryableSender retryableSender = senderConfig.createInstance();
    return new Fluency.Builder(retryableSender).setBufferConfig(bufferConfig).setFlusherConfig(flusherConfig).build();
}
Also used : PackedForwardBuffer(org.komamitsu.fluency.buffer.PackedForwardBuffer) ExponentialBackOffRetryStrategy(org.komamitsu.fluency.sender.retry.ExponentialBackOffRetryStrategy) AsyncFlusher(org.komamitsu.fluency.flusher.AsyncFlusher) RetryableSender(org.komamitsu.fluency.sender.RetryableSender)

Aggregations

RetryableSender (org.komamitsu.fluency.sender.RetryableSender)4 FailureDetector (org.komamitsu.fluency.sender.failuredetect.FailureDetector)3 ExponentialBackOffRetryStrategy (org.komamitsu.fluency.sender.retry.ExponentialBackOffRetryStrategy)3 InetSocketAddress (java.net.InetSocketAddress)2 Test (org.junit.Test)2 PackedForwardBuffer (org.komamitsu.fluency.buffer.PackedForwardBuffer)2 AsyncFlusher (org.komamitsu.fluency.flusher.AsyncFlusher)2 MultiSender (org.komamitsu.fluency.sender.MultiSender)2 MockTCPSender (org.komamitsu.fluency.sender.MockTCPSender)1 NetworkSender (org.komamitsu.fluency.sender.NetworkSender)1 SSLSender (org.komamitsu.fluency.sender.SSLSender)1 TCPSender (org.komamitsu.fluency.sender.TCPSender)1