FlashSaleOutboxMetrics.java
package com.ecommerce.marketing.infrastructure.observability;
import com.ecommerce.marketing.infrastructure.persistence.mapper.FlashSaleOutboxEventMapper;
import com.ecommerce.platform.common.observability.OutboxMetrics;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Timer;
import org.springframework.stereotype.Component;
import java.time.Clock;
@Component
public class FlashSaleOutboxMetrics {
private final OutboxMetrics delegate;
public FlashSaleOutboxMetrics(
MeterRegistry meterRegistry,
FlashSaleOutboxEventMapper outboxMapper,
Clock clock) {
delegate = new OutboxMetrics(
meterRegistry,
"marketing-service",
outboxMapper::countUnpublished,
outboxMapper::selectOldestUnpublishedCreatedAt,
clock);
}
public Timer.Sample startPublication() {
return delegate.startPublication();
}
public void publicationSucceeded(Timer.Sample sample) {
delegate.publicationSucceeded(sample);
}
public void publicationFailed(Timer.Sample sample) {
delegate.publicationFailed(sample);
}
public void publicationStateConflict(Timer.Sample sample) {
delegate.publicationStateConflict(sample);
}
public void claimContended() {
delegate.claimContended();
}
}