Можно ли объявить несколько связующих микрометров в одной декларации бина - PullRequest
0 голосов
/ 10 ноября 2019

По умолчанию метрики из всех компонентов 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));
    }

}

Могу ли я сделать это лучше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...