Quarkus kafka установить имя темы из файла конфигурации

Когда я хочу настроить костюмер и указать название темы, то нет возможности указать это имя из конфига, как, например, это было сделано с помощью spring

Кваркус:

@ApplicationScoped
public class Consumer {
    
    @Incoming("topic-name")  //is it possible to pass the value from the config here?
    public void consume(String s) {
        Log.info(s);
    }
}

весной это выглядело бы так

@Incoming("${topic.name}")  

приложение.yml

topic:
   name: topic-name

Можно ли передать значение из конфига в аннотацию @Incoming("value") в Quarkus?

так в чем проблема?

tornadoradon 26.04.2023 18:42

можно ли в кваркус передать значения из конфига, как в спринге?

Andrew Samoilov 27.04.2023 08:27

Нет, я имел в виду, что вы пробовали, почему это не сработало?

tornadoradon 27.04.2023 09:19
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
3
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны указать «название канала» вместо «название темы» в аннотации @Incoming.

Ваш Java-код будет выглядеть так:

@ApplicationScoped
public class Consumer {

   @Incoming("your-custom-channel-name")
   public void consume(String s) {
      Log.info(s);
   }
}

Честно говоря, я никогда не использовал формат yml, только файл application.properties. Здесь вы должны определить канал с каждым из его свойств (например, тему):

mp.messaging.incoming.your-custom-channel-name.topic=your-topic-name
mp.messaging.incoming.your-custom-channel-name.auto.offset.reset=earliest
mp.messaging.incoming.your-custom-channel-name.group.id=${quarkus.kafka-streams.application-id}-my-private-group-id

Я предполагаю, что если вы попытаетесь переформатировать это в свой файл yml, это будет выглядеть так (не проверено):

mp:
  messaging:
    incoming: 
      your-custom-channel-name:
        topic: your-topic-name
        auto:
          offset:
            reset: earliest
        group:
          id: ${quarkus.kafka-streams.application-id}-my-private-group-id

Следуя этому руководству на веб-сайте Quarkus, вы получите пошаговый подход к тому, как это сделать: Реактивный обмен сообщениями с Kafka

Другие вопросы по теме