Как создать ConsumerTemplate в Apache Camel

У меня есть процессор верблюда, который читает файл из каталога с помощью ConsumerTemplate, как показано ниже.

@Component
public class FileReaderProcessor implements Processor {

    @Consume
    private ConsumerTemplate consumerTemplate;

    /**
     * {@inheritDoc}
     */
    @Override
    public void process(Exchange exchange) throws Exception {
        final byte[] filecontent = consumerTemplate.receiveBody(SOURCE_FILE_COMPONENT,
                byte[].class);

    }
}

Однако, когда я попробовал код ниже, он работает

final byte[] filecontent = exchange.getContext().createConsumerTemplate().receiveBody(SOURCE_FILE_COMPONENT,
                byte[].class);

Проблема в том, что мне нужно аннотировать ConsumerTemplate и использовать его в своем коде. пожалуйста, помогите мне использовать ConsumerTemplate с аннотацией

@Consume
    private ConsumerTemplate consumerTemplate;

person rocky    schedule 18.01.2019    source источник
comment
Поскольку это аннотированный класс Spring с @Component, вы должны иметь возможность использовать Spring @Autowired и т.д.   -  person Claus Ibsen    schedule 18.01.2019
comment
что-то вроде этого @Autowired private ConsumerTemplate ConsumerTemplate;   -  person rocky    schedule 18.01.2019


Ответы (1)


Если вы проверите класс ConsumerTemplate, вы заметите, что он расширяет Service. Это означает, что он может быть автоматически подключен, как и любой другой компонент в Spring Boot, который, как я предполагаю, вы используете на основе аннотации @Component, используемой в вашем коде. Итак, решение довольно простое:

@Autowired
private ConsumerTemplate consumerTemplate;
person cube    schedule 23.02.2021