#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-й раз он выдает это исключение и как это решить ?