Я пытаюсь запустить простую программу повторной последовательности, используя Apache Camel. Эта программа использует DSL для повторной последовательности входящих сообщений Java. Когда я запускаю эту программу, сообщения записываются в папку, но не отображаются в каком-либо конкретном порядке на основе значения заголовка или алфавитного порядка единственного слова в теле сообщения. Файлы, созданные Camel, все еще не работают, как если бы функция DSL resequence
ничего не делала.Apache Camel Resequence Program Не работает
Как я могу получить эту программу для фактического заказа сообщений, как метод Arrays.sort()
? Кроме того, как я могу заставить эту программу выполнить повторение, а затем агрегировать сообщения в правильном порядке сортировки в один файл?
Вот программа ... Я называю основной маршрут верблюда другим классом, который имеет метод main
.
import org.apache.camel.builder.RouteBuilder;
public class SortThoseMessages extends RouteBuilder {
@Override
public void configure() throws Exception {
from("direct:pointA")
.resequence(header("grocery"))
.to("file:target/pointB");
}
}
Класс ниже имеет main
и производит сообщения в очереди, точке А.
import org.apache.camel.CamelContext;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.ProducerTemplate;
public class NewSequenceMain {
public static void main(String[] args) {
CamelContext c = new DefaultCamelContext();
try {
c.addRoutes(new SortThoseMessages());
ProducerTemplate template = c.createProducerTemplate();
c.start();
template.sendBodyAndHeader("direct:pointA", "apple", "grocery", 1);
template.sendBodyAndHeader("direct:pointA", "orange", "grocery", 3);
template.sendBodyAndHeader("direct:pointA", "bannanna", "grocery", 2);
Thread.sleep(5000);
c.stop();
} catch(Exception ex) {
System.err.println("Exception thrown -> " + ex);
System.err.println("Now printing stacktrace...");
ex.printStackTrace();
}
}
}
Что вы подразумеваете под "файлы не в порядке"? Являются ли временные метки файлов некорректными, так что ovbvious не происходит сортировка? Возможно, вы можете добавить регистратор в корневой каталог до и после resequence(), чтобы увидеть порядок сообщений. – Frank
Привет @Frank, когда я говорю, что они не в порядке, я имею в виду, что файлы, созданные Camel, находятся в порядке того, как сообщения были созданы с помощью ProducerTemplate. Файлы заканчиваются цифрами - 1 для сообщения apple, 3 для оранжевого сообщения и 5 для сообщения о банане. Возможно, было бы полезно использовать когда-нибудь журнал, как вы описываете. Спасибо за помощь Фрэнка. :) Это сбивает с толку ... –
@Frank После добавления в журнал DS в DSL, как вы предположили, я вижу, что, возможно, в соответствии с панибрами в заголовке, что сообщения были упорядочены или отсортированы в алфавитном порядке. Я попытаюсь проверить его, объединив все тела сообщений в один файл, чтобы сортировка была более очевидной. : D –