У меня есть три маршрута на верблюдах, которые работают нормально индивидуально, я пытаюсь вызвать второй маршрут после завершения первого маршрута, но каким-то образом он не запускается, как выполняется третий маршрут события, когда я вызываю второй маршрут с помощью URL jetty:http://localhost:8181/mongoSelect
, у меня нет ошибки консоль тоже. Я уже пробовал заменить from("jetty:http://localhost:8181/mongoSelect")
на компонент direct:
. Помогите мне, пожалуйста.
Константы
private static final String SOURCE = "file:\\workspace\\EmailResponseAutomationSTS\\response\\?noop=true";
private static final String DESTINATION = "mongodb:myDb?database=email_response&collection=emailResponse&operation=save";
private static final String QUERY_MONGO_DB = "mongodb:myDb?database=email_response&collection=emailResponse&operation=findAll";
Первый маршрут
from(SOURCE)
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
final EmailResponseModel erm = new EmailResponseModel();
erm.setBody(exchange.getIn().getBody(String.class));
exchange.getIn().setBody(erm, DBObject.class);
}
})
.to(DESTINATION)
.end();
Второй маршрут
from("jetty:http://localhost:8181/mongoSelect")
.to(QUERY_MONGO_DB)
.marshal(new JacksonDataFormat())
.to("direct:redis")
.end();
Третий маршрут
from("direct:redis").process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
final String name = exchange.getIn().getBody(String.class);
@SuppressWarnings({ "deprecation", "unchecked" })
List<BasicDBObject> obj = (List<BasicDBObject>) JSON.parse(name);
for(BasicDBObject model : obj) {
String s = model.getString("body");
jedis.set("mongoData", s);
}
jedis.close();
}
})
.end();
Я уже пробовал такой подход:
Первый маршрут
from(SOURCE)
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
final EmailResponseModel erm = new EmailResponseModel();
erm.setBody(exchange.getIn().getBody(String.class));
exchange.getIn().setBody(erm, DBObject.class);
}
})
.to(DESTINATION)
.to("direct:mongoSelect")
.end();
Второй маршрут
from("direct:mongoSelect")
.to(QUERY_MONGO_DB)
.marshal(new JacksonDataFormat())
.to("direct:redis")
.end();
ОБНОВЛЕНИЕ: Что-то странное происходит с моим кодом, когда я вызываю второй маршрут из первого маршрута с использованием компонента direct:mongoSelect
, управление перемещается, но нет данных в ответ от .to(QUERY_MONGO_DB)
, однако, если я использую from("jetty:http://localhost:8181/mongoSelect")
вместо from("direct:mongoSelect")
во втором маршруте я получаю данные в ответ.
Первый маршрут
from(SOURCE)
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
final EmailResponseModel erm = new EmailResponseModel();
erm.setEmailBody(exchange.getIn().getBody(String.class));
exchange.getIn().setBody(erm, DBObject.class);
}
})
.to(DESTINATION)
.to("direct:mongoSelect");
Второй маршрут
from("direct:mongoSelect")
.to(QUERY_MONGO_DB)
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
String srt = exchange.getIn().getBody(String.class);
exchange.getIn().setBody(srt, DBObject.class);
}
})
.to("direct:redis")
.end();
.to("direct:mongoSelect")
, но у меня это не сработало. - person Shamim Ahmad   schedule 27.03.2018