Потребитель Кафки, использующий Apache Camel - PullRequest
0 голосов
/ 20 марта 2020

Я новичок в Apache верблюд. мы делаем ПО C для разработки потребителя кафки с использованием Camel. Ниже приведен пример кода.

    context.addRoutes(new RouteBuilder(){

      @Override
        public void configure() throws Exception {
            // TODO Auto-generated method stub

         from("kafka:{{consumer.topic}}?brokers={{kafka.host}}:{{kafka.port}}" 
                     + "&consumersCount={{consumer.consumersCount}}" 
                     + "&seekTo={{consumer.seekTo}}" 
                     + "&groupId={{consumer.group}}")
             .process(new Processor() {

                @Override
                public void process(Exchange exchange) throws Exception {

                    Message message = exchange.getIn();
                    Object data = message.getBody();

                    System.out.println(data);
                }
             })
             .to("seda:end");


  });

        context.start();

    ConsumerTemplate template=context.createConsumerTemplate();
    String info=template.receiveBody("seda:end",String.class);

    System.out.println(info);
}

У меня возникают следующие проблемы:

  1. Контекст останавливается сразу после запуска.
  2. Если я опрашиваю конечную точку, используя шаблон потребителя , он ничего не печатает, тогда как внутри .process () я могу печатать сообщения kafka, когда запускаю контекст в бесконечном l oop. Почему потребительский шаблон не умеет печатать.

1 Ответ

0 голосов
/ 23 марта 2020
  1. Как уже заметил Клаус, ваш верблюжий контекст немедленно закрывается, потому что он не блокирует. Смотрите ссылки в своем комментарии.
  2. Я думаю, что вы пропустили template.start();, чтобы начать свой потребитель. См. эту ссылку для примера.
...