Google Cloud PubSub made easy! Kotlin GCP PubSub offers idiomatic KotlinX & Ktor integration for GCP.
@Serializable
data class Event(val key: String, val message: String)
fun Application.pubSubApp() {
pubSub(ProjectId("my-project")) {
subscribe<Event>(SubscriptionId("my-subscription")) { (event, record) ->
println("event.key: ${event.key}, event.message: ${event.message}")
record.ack()
}
}
routing {
post("/publish/{key}/{message}") {
val event = Event(call.parameters["key"]!!, call.parameters["message"]!!)
pubSub()
.publisher(ProjectId("my-project"))
.publish(TopicId("my-topic"), event)
call.respond(HttpStatusCode.Accepted)
}
}
}
- PubSub Ktor plugin to conveniently consume messages from GCP PubSub, and publish messages to GCP PubSub
- PubSub Ktor KotlinX Serialization Json to conveniently consume messages from GCP PubSub, and publish messages to GCP PubSub using KotlinX Serialization Json
- PubSub test one-line testing support powered by testcontainers
- GCP PubSub: KotlinX integration for
TopicAdminClient
,SubscriptionAdminClient
,Susbcriber
andPublisher
. - PubSub Ktor KotlinX Serialization Json to conveniently consume messages from GCP PubSub, and publish messages to GCP PubSub
- Google Common API: KotlinX integration for
ApiFuture
Add dependencies (you can also add other modules that you need):
dependencies {
implementation("io.github.nomisrev:gcp-pubsub-ktor:1.0.0")
implementation("io.github.nomisrev:gcp-pubsub-ktor-kotlinx-serialization-json:1.0.0")
testImplementation("io.github.nomisrev:gcp-pubsub-test:1.0.0")
}
Add dependencies (you can also add other modules that you need):
<dependency>
<groupId>io.github.nomisrev</groupId>
<artifactId>gcp-pubsub-ktor</artifactId>
<version>1.0.0</version>
</dependency>