Skip to main content
Version: 1.1.0

Messaging Integrations

Namastack Outbox provides first-class support for sending outbox events to Kafka and RabbitMQ. These modules offer ready-to-use handlers, flexible routing, and simple configuration.

Quickstart: Adding Kafka or RabbitMQ Support

To use the Kafka or RabbitMQ modules, simply add the corresponding dependency to your project:

dependencies {
implementation("io.namastack:namastack-outbox-kafka:1.1.0")
implementation("io.namastack:namastack-outbox-rabbit:1.1.0")
}

Both modules are optional and can be included as needed. They are auto-configured if Spring Kafka or Spring AMQP is present on the classpath.


  • Handler: KafkaOutboxHandler automatically sends outbox events to Kafka topics.
  • Routing: Customizable via a KafkaOutboxRouting bean. Define target topic, key, headers, payload mapping, and filtering per payload type.
  • Headers: Use the headers configurer to set custom Kafka headers for each message.
  • Auto-configuration: Enabled if Spring Kafka is present.
@Configuration
class KafkaOutboxConfig {
@Bean
fun kafkaOutboxRouting() = kafkaOutboxRouting {
route(OutboxPayloadSelector.type(OrderEvent::class.java)) {
target("orders")
key { payload, _ -> (payload as OrderEvent).orderId }
headers { payload, metadata -> mapOf(
"custom-header" to "value",
"traceId" to metadata.context["traceId"])
}
mapping { payload, _ -> (payload as OrderEvent).toPublicEvent() }
filter { payload, _ -> (payload as OrderEvent).status != "CANCELLED" }
}
defaults {
target("domain-events")
}
}
}

Configuration Properties

PropertyDefaultDescription
namastack.outbox.kafka.enabledtrueEnable Kafka outbox integration
namastack.outbox.kafka.default-topicoutbox-eventsDefault Kafka topic for outbox events
namastack.outbox.kafka.enable-jsontrueEnable JSON support for Kafka outbox integration

Both modules are optional and can be included as needed. They provide a fast path to production-ready messaging integration with minimal configuration.