Не удается запустить параллельную обработку верблюда, даже если я использую ExecutorService - PullRequest
0 голосов
/ 07 августа 2020

Я хотел бы создать в моей программе 2 процедуры, выполняемые параллельно. В настоящее время я использую верблюжий поток для обработки файлов, и он работает, но в то же время я хотел бы запустить свою программу, которая потребляет сообщения kafka. 2 работают независимо, но не параллельно. вот мой код:

FileRouteBuilder:

@Component
public class FileRouteBuilder extends SpringRouteBuilder {


    private KafkaListener KafkaListener;
    
    private WorkflowEventConsumerRoute workflowEventConsumerRoute;
    
    private CamelContext camelContext;
    
    @Autowired 
    public FileRouteBuilder(final KafkaListener KafkaListener,CamelContext camelContext) {
        this.KafkaListener = KafkaListener;
        this.camelContext=camelContext;

        ExecutorService exec = Executors.newFixedThreadPool(25);
        exec.execute(new Runnable() {
            @Override
            public void run() {
                while(true){
                    KafkaListener.processMessage();
                }
            }
        });
        exec.shutdown();
    }
    

    @Override
    public void configure() throws Exception {

        //while(true){
        final String filePathIn = "/location"
        final String schemaPath = "**.xsd";

        final DataFormat jacksonDataFormat = new JacksonXMLDataFormat(RequestDto.class);
        
        from("file:" ******)
                // process ok
                .end();
        //}
    }
    

}

KafkaListener:

@Component
public class KafkaListener /*implements Runnable */{


    @Value("${kafka.topic}")
    private transient String topic;
    
    @Autowired
    @Qualifier("consumerConfig")
    private transient Properties kafkaConfig;
    
    KafkaConsumer<Long, GenericRecord> consumer;
    
    
    public void processMessage()  {
    
        LOGGER.debug("---------- Process consumer-----------");
        consumer = new KafkaConsumer<>(kafkaConfig);
            
        consumer.subscribe(Collections.singletonList(topic));
            while (true) {
                //process
            }
    }
}

Я пытался создать 2 из (), затем 2 верблюжьих маршрута, но безуспешно. ты можешь мне помочь?

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