По умолчанию метрики из всех компонентов MeterBinder
будут автоматически привязаны к управляемому Spring MeterRegistry
. Это прекрасно работает, когда возможно индивидуально настроить связующие. Однако я ищу возможность объявлять несколько связывателей. Мой пример использования основан на программном объявлении и создании нескольких очередей кролика. Проект spring-amqp
удобен с концепцией класса Declarables
, который:
Коллекция Declarable
объектов;используется для объявления нескольких объектов в брокере с использованием единственного объявления bean-компонента для коллекции.
Есть ли в Spring-Boot концепция симлара, я бы назвал ее MeterBinders
, которая позволяет мне удалятьнесколько объектов метра, используя единственное объявление бина.
Я бы хотел избежать одновременного объявления моих очередей и метров (с new QueueSizeMeterBinder(queueInformation).bindTo(meterRegistry)
- держите их отдельно).
В настоящее время, чтобы разделить эти понятия, я использую дополнительный класс конфигурации, который не выглядит для меня как идиоматическая пружина
@Configuration
@RequiredArgsConstructor
class QueueMetricsConfiguration {
private final Declarables queues;
private final AmqpAdmin amqpAdmin;
private final MeterRegistry meterRegistry;
@PostConstruct
public void bindMetrics() {
queues.getDeclarablesByType(Queue.class)
.forEach(queue -> new QueueSizeMeterBinder(amqpAdmin.getQueueInfo(queue.getName()))
.bindTo(meterRegistry));
}
}
Могу ли я сделать это лучше