https://github.com/infumia/pubsub
Simplified pubsub library for Redis and various databases.
https://github.com/infumia/pubsub
jackson java kotlin pubsub redis
Last synced: 2 months ago
JSON representation
Simplified pubsub library for Redis and various databases.
- Host: GitHub
- URL: https://github.com/infumia/pubsub
- Owner: Infumia
- License: mit
- Created: 2024-06-07T17:01:42.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2025-04-01T13:39:53.000Z (about 1 year ago)
- Last Synced: 2025-04-01T14:37:29.990Z (about 1 year ago)
- Topics: jackson, java, kotlin, pubsub, redis
- Language: Java
- Homepage:
- Size: 252 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# pubsub
[](https://central.sonatype.com/artifact/net.infumia/pubsub)
## How to Use (Developers)
### Gradle
```groovy
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"
}
```
### Code
```kotlin
fun main() {
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 {
println(it.test)
}
while (true) {
broker.send(Test("Hello World"))
Thread.sleep(1000L)
}
// ...
broker.close()
}
class Test(var test: String = "")
```