Skip to content

Instantly share code, notes, and snippets.

@JorgenRingen
JorgenRingen / KafkaConfig.kt
Created February 11, 2021 16:10
Set topic-config for internal changelog-topics in kafka streams
streamsBuilder.addStateStore(
Stores.keyValueStoreBuilder(
Stores.persistentKeyValueStore("storeName"),
Serdes.StringSerde(),
JsonSerde<OrderV2>()
)
.withCachingEnabled()
.withLoggingEnabled(
mapOf(
RETENTION_MS_CONFIG to Duration.ofDays(30).toMillis().toString(),
@JorgenRingen
JorgenRingen / Outerjoin with windowing
Last active October 2, 2020 10:33
Kafka joining streams/tables with windowing
package org.example.profiles
import org.apache.kafka.clients.consumer.ConsumerConfig
import org.apache.kafka.common.serialization.Serdes
import org.apache.kafka.streams.KafkaStreams
import org.apache.kafka.streams.StreamsBuilder
import org.apache.kafka.streams.StreamsConfig
import org.apache.kafka.streams.kstream.Consumed
import org.apache.kafka.streams.kstream.JoinWindows
import org.apache.kafka.streams.kstream.ValueJoiner
@JorgenRingen
JorgenRingen / KafkaConsumer.java
Created July 25, 2019 08:48
Consume partition with initial offset using spring-boot-kafka
@KafkaListener(topics = KafkaSpringBootHelloWorldApplication.TOPIC_USERS, groupId = "${groupId}",
topicPartitions = {
@TopicPartition(
topic = KafkaSpringBootHelloWorldApplication.TOPIC_USERS,
partitionOffsets = @PartitionOffset(partition = "0", initialOffset = "0"))
})
@JorgenRingen
JorgenRingen / scratch_11.java
Last active May 29, 2019 08:58
Declare slf4j logger in a copy-paste-friendly way
private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@JorgenRingen
JorgenRingen / TimingExtension.java
Created February 18, 2019 09:03
JUnit5 timingextension for tests
import java.lang.reflect.Method;
import java.util.logging.Logger;
import org.junit.jupiter.api.extension.AfterTestExecutionCallback;
import org.junit.jupiter.api.extension.BeforeTestExecutionCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
import org.junit.jupiter.api.extension.ExtensionContext.Store;
public class TimingExtension implements BeforeTestExecutionCallback, AfterTestExecutionCallback {
DateTimeFormatter timeFormatter = new DateTimeFormatterBuilder()
.appendValue(HOUR_OF_DAY, 2)
.appendLiteral(':')
.appendValue(MINUTE_OF_HOUR, 2)
.optionalStart()
.appendLiteral(':')
.appendValue(SECOND_OF_MINUTE, 2)
.toFormatter();
return LocalTime.now().format(timeFormatter);
@JorgenRingen
JorgenRingen / gist:637db2e308a22853d84c1ed768033cac
Created December 19, 2018 09:38
SpringBoot - Read file from a jar on classpath
private String readContentFromFileInJarOnClasspath() {
try {
return StreamUtils.copyToString(new ClassPathResource("/lol.txt").getInputStream(), Charset.defaultCharset());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@JorgenRingen
JorgenRingen / AkrForhandlerWebSpringConfig.java
Last active December 19, 2018 09:42
MdcTaskDecoratorExample
package no.vegvesen.kjoretoy.registrering.forhandler.web.config;
import java.util.concurrent.Executor;
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.core.task.SimpleAsyncTaskExecutor;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
@JorgenRingen
JorgenRingen / pom.xml
Created December 7, 2018 11:51
Example of flatten-maven-plugin
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<configuration>
<updatePomFile>true</updatePomFile>
<outputDirectory>${project.build.directory}</outputDirectory>
<pomElements>
<repositories>remove</repositories>
</pomElements>
</configuration>
@JorgenRingen
JorgenRingen / DatabaseCleanup.java
Created October 18, 2018 10:31
Empty @Entity-tables before running test
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Table;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Service;