
repositories {
mavenCentral()
}
dependencies {
// Base modules
implementation "net.infumia:pubsub:VERSION"
implementation "net.infumia:pubsub-codec:VERSION"// Required, https://mvnrepository.com/artifact/com.github.ben-manes.caffeine/caffeine/
implementation "com.github.ben-manes.caffeine:caffeine:2.9.3"// for java-8+
implementation "com.github.ben-manes.caffeine:caffeine:3.1.8"// for java-11+// Pub/Sub using Redis (Optional)
implementation "net.infumia:pubsub-redis:VERSION"// Required, https://mvnrepository.com/artifact/io.lettuce/lettuce-core/
implementation "io.lettuce:lettuce-core:6.3.2.RELEASE"// A simple codec using Jackson (Optional)
implementation "net.infumia:pubsub-jackson:VERSION"// Required, https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/
implementation "com.fasterxml.jackson.core:jackson-databind:2.17.1"// Kotlin extensions (Optional)
implementation "net.infumia:pubsub-kotlin:VERSION"// Kotlin coroutines (Optional)
implementation "net.infumia:pubsub-kotlin-coroutines:VERSION"// Required, https://mvnrepository.com/artifact/org.jetbrains.kotlinx/kotlinx-coroutines-core/
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1"// Kotlin protobuf serializer (Optional)
implementation "net.infumia:pubsub-kotlin-protobuf:VERSION"// Required, https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-reflect/
implementation "org.jetbrains.kotlin:kotlin-reflect:2.0.0"// Required, https://mvnrepository.com/artifact/org.jetbrains.kotlinx/kotlinx-serialization-core/
implementation "org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.0"// Required, https://mvnrepository.com/artifact/org.jetbrains.kotlinx/kotlinx-serialization-protobuf/
implementation "org.jetbrains.kotlinx:kotlinx-serialization-protobuf:1.7.0"
}funmain() {
val mapper =ObjectMapper()
val redisCredentials =RedisCredentials.just(null, "local")
val redisAuth =StaticCredentialsProvider(redisCredentials)
val redisUri =RedisURI.builder()
.withHost("localhost")
.withPort(6379)
.withAuthentication(redisAuth)
.build()
val client =RedisClient.create(redisUri)
val codecProviderJackson =CodecProviderJackson { mapper }
val codecProvider =CodecProviderCached(codecProviderJackson)
val broker =BrokerRedisNoTargetProvider(codecProvider) { client }
broker.initialize()
broker.listen<Test> {
println(it.test)
}
while (true) {
broker.send(Test("Hello World"))
Thread.sleep(1000L)
}
// ...
broker.close()
}
classTest(vartest:String = "")