2013-05-28 3 views
2

Я работаю над маршрутом с использованием Apache Camel и aggretaor EIP. Маршрут использует данные из базы данных через jms, агрегирует ее и отправляет в веб-службу.Camel Aggregator EIP улучшает скорость

Агрегатор хранит данные в базе данных оракула.

Как мы все знаем, блок синхронизации aggreagtor - это шея для boddle в этом маршруте.

я уже пытался использовать несколько ведер (correltionExpression = threadName), но это не улучшило скорость столько, сколько хотел ...

мне нужно как минимум 150 сообщений в секунду. На данный момент только 70 возможно :(

Кто-нибудь есть идеи, как скорость может быть улучшена Может быть вторым Aggregator Есть ли какие-либо предложения

последний вопрос:? Это агрегатор возможности писать сообщения в нескольких кодах параллельно или это не так из-за блокировки? Поскольку документация внутри кода говорит, что это (одновременная агрегирование на один корреляционный ключ может повысить производительность), сам код не делает это, на мой взгляд.

Заранее благодарен

Stefan

ответ

0

Вы можете реализовать свой собственный AggregationRepository, и там вы можете делать массовые сбережения в своей базе данных.

Из-за коробки на основе JDBC выполняется одно обновление/вставка за раз.

+0

Здравствуйте, Клаус, создавая собственное AggregationRepository, является хорошей идеей, но в моем случае его действительно сложно реализовать из-за того, что он должен быть безопасным для транзакций. Я не знаю, как это реализовать. Есть ли вторая идея, с которой я могу ускорить дозирующие сообщения? – sarians

0

Вы можете реализовать агрегатор, используя репозиторий файлов HawtDB. Хотя я уже сталкиваюсь с проблемами производительности с хранилищами HawtDB или уровня DB в своем приложении, я уверен, что это будет быстрее, чем настойчивость JDBC.

Насколько я знаю, ничто не сравнится с агрегацией в памяти, если вы готовы пожертвовать сохранением данных.

Смежные вопросы