Skip to main content
Version: Next

Monitoring & Observability

Metrics Module

The namastack-outbox-metrics module provides automatic integration with Spring Boot Actuator and Micrometer:

dependencies {
implementation("io.namastack:namastack-outbox-starter-jpa:Next")
implementation("io.namastack:namastack-outbox-metrics:Next")
// For Prometheus endpoint (optional)
implementation("io.micrometer:micrometer-registry-prometheus")
}

Built-in Metrics

MetricDescriptionTags
outbox.records.countNumber of outbox recordsstatus=new|failed|completed
outbox.partitions.assigned.countPartitions assigned to this instance-
outbox.partitions.pending.records.totalTotal pending records across partitions-
outbox.partitions.pending.records.maxMaximum pending records in any partition-
outbox.cluster.instances.totalTotal active instances in cluster-
Endpoints
  • /actuator/metrics/outbox.records.count
  • /actuator/metrics/outbox.partitions.assigned.count
  • /actuator/prometheus (if Prometheus enabled)

Programmatic Monitoring

@Service
class OutboxMonitoringService(
private val outboxRepository: OutboxRecordRepository,
private val partitionMetricsProvider: OutboxPartitionMetricsProvider
) {
fun getPendingRecordCount(): Long =
outboxRepository.countByStatus(OutboxRecordStatus.NEW)
fun getFailedRecordCount(): Long =
outboxRepository.countByStatus(OutboxRecordStatus.FAILED)
fun getPartitionStats(): PartitionProcessingStats =
partitionMetricsProvider.getProcessingStats()
fun getClusterStats(): PartitionStats =
partitionMetricsProvider.getPartitionStats()
}