О компоненте SEDA в Camel, кто-нибудь знает, удаляет ли объект Exchange из очереди при его маршрутизации? Мой маршрутизатор работает нормально, но я боюсь, что он держит объекты Exchange, в очереди, так что моя очередь будет непрерывно расти ...Чтение и удаление Exchange из очереди SEDA в Camel
Это мой маршрутизатор:
public class MyRouter extends RouteBuilder {
@Override
public void configure() {
from("seda:input")
.choice()
.when(someValue)
.to("bean:someBean?method=whatever")
.when(anotherValue)
.to("bean:anotherBean?method=whatever");
}
}
Если нет, то кто-нибудь знает, как удалить объект Exchange из очереди после его маршрутизации или обработки (я направляю сообщения некоторым компонентам в моем приложении, и они работают правильно, единственная проблема в очереди).
Другой вопрос: что произойдет, если мой ввод Exchange не соответствует ни одному из условий выбора? Сохраняется ли она в очереди?
Большое спасибо.
Отредактировано: после прочтения ответа Клауса, я добавил метод end() к маршрутизатору. Но моя проблема сохраняется, по крайней мере, при одновременном тестировании седана и маршрутизатора. Я помещаю несколько сообщений в очередь, высмеивая конечные точки (которые получают сообщения), но очередь заполняется каждый раз, когда я выполняю тест. Может быть, я чего-то не хватает. Это мой тест:
@Test
public void test() throws Exception {
setAdviceConditions(); //This method sets the advices for mocking the endpoints
Message message = createMessage("text", "text", "text"); //Body for the Exchange
for (int i = 0; i < 10; i++) {
template.sendBody("seda:aaa?size=10", message);
}
template.sendBody("seda:aaa?size=10", message); //java.lang.IllegalStateException: Queue full
}
Спасибо!
Отредактировано снова: после проверки моего маршрутизатора, я понял, проблемы, я писал в другую конечную точку, чем один маршрутизатор читал из (Facepalm)
Спасибо вам Клауса за ваш ответ.