Как отправлять сообщения на один и тот же набор маршрутов несколько раз и выполнять их асинхронно одновременно в разных потоках?

#apache-camel #spring-camel

Вопрос:

У меня есть ситуация, когда нам нужно отправить сообщение на один и тот же маршрут несколько раз, и этот маршрут будет выполняться бесконечно, например,

 from(file://configuration.txt)
.bean(parseToList.class)
.split(body()) // each iteration will have different config data
.to(route://xyz)
.end()


//this will run indefinetly 
from(direct://xyz)
.to(sql:fetch query dynamically based on data)
.choice().when().simple(roucount>0).to(file://destination)
.sleep(3000)
.to(direct://xyz)
 

Мне нужно прямое:XYZ должен вызываться для каждого сообщения в другом потоке и должен выполняться вечно. Как добиться этого в camel?

Правка 1: У меня есть предложение использовать seda: вместо прямого, чтобы включить возможность асинхронности. Но мне также нужно, чтобы маршрут был транзакционным, поэтому есть какие-либо предложения по реализации асинхронного и транзакционного маршрута?

Ответ №1:

Я думаю, что то, что вы ищете, может быть реализовано с помощью компонента SEDA. direct: компонент является синхронным, но SEDA обеспечивает асинхронное поведение. Дополнительно проверьте образцы в репозитории примеров верблюдов.

Комментарии:

1. Поддерживает ли SEDA транзакционное поведение? Если нет, то есть ли какая-либо альтернатива поддержке транзакций?