Исключение consumer Потребитель[прямая виртуальная машина] уже существует в camel

#java #spring #apache-camel

Вопрос:

Я использую camel 2.25, и я столкнулся с проблемой с проводом, у меня есть метод, как показано ниже

  public Exchange invoke(String url) throws Exception {
    CamelContext context = new DefaultCamelContext();
    context.addRoutes(new RouteBuilder() {
        public void configure() {
            from(FROM_ROUTE).to(url);
        }
    });
    context.start();
    try {
        ProducerTemplate producer = context.createProducerTemplate();
        return producer.request(FROM_ROUTE, exchange -> {
            exchange.getIn().setHeader(Exchange.HTTP_METHOD, org.apache.camel.component.http4.HttpMethods.GET);
            exchange.setPattern(ExchangePattern.InOut);
        });
    }
    finally {
        context.stop();
    }
}
 

Я вызываю этот метод invoke() из компонента spring во время @PostConstruct во время инициализации, он работает нормально, я могу получить ответ.

как только мое приложение будет полностью развернуто, я снова вызову этот метод invoke() через api, и он выдаст сообщение об исключении

Потребительский потребитель[direct-vm] уже существует из CamelContext:config.service.v1.0.0. Несколько потребителей не поддерживаются

Но затем я вызываю тот же api в следующий раз, он работает без каких-либо исключений при последующих вызовах. Я в замешательстве, почему только во 2-й раз он выдает это исключение и как это решить ?