Изменить имя наблюдения < /li>
Добавить низкие и высокие значения кардинальности, которые можно извлечь самим сообщением kafka < /li>
Добавить некоторые специфические свойства бизнес -логики, которые были бы доступны позже, но и все, что нельзя сделать, но не все. Гордитесь решением: < /p>
Код: Выделить всё
@Slf4j
public class KafkaConsumerObservationConvention extends KafkaListenerObservation.DefaultKafkaListenerObservationConvention {
@Override
public boolean supportsContext(Observation.Context context) {
return super.supportsContext(context);
}
@Override
public String getName() {
return "consumeKafkaEvent";
}
@Override
public KeyValues getLowCardinalityKeyValues(KafkaRecordReceiverContext context) {
...
}
}
< /code>
Вышеупомянутое забота о требованиях 1 и 2, но не 3, так как наблюдается, что при создании наблюдения создается наблюдение, и у меня просто нет этих свойств в этот момент.@Autowired ObservationRegistry observationRegistry;
Optional.ofNullable(observationRegistry.getCurrentObservation())
.ifPresent(o->o.lowCardinalityKeyValue(
KeyValue.of("key", "value");
< /code>
Мне не нравится этот подход, потому что < /p>
Проблемы: < /p>
Логика обогащения наблюдения теперь разбросана по всему применению. Любой, кто хочет добавить какую -то свойство, должен сделать эту вещь низкого уровня самостоятельно. Следовательно, наблюдение не является универсальным решением < /li>
Из того, что я знаю, наблюдения также могут быть сложены, поэтому, если это что -то вроде obs1 -> obs2 -> obs3. Когда я делаю наблюдение зарегистрировано. GetCurrentObservation () Подробнее здесь: https://stackoverflow.com/questions/797 ... enrichment