Обычная очередь против очереди SEDA - PullRequest
11 голосов
/ 06 февраля 2012

Будучи новичком в Apache Camel, я недавно просматривал его длинный список компонентов и наткнулся на их поддержку SEDA queue компонентов.

Страница не имела для меня особого смыслапоэтому я провел пару онлайн-поисков по слову «очередь SEDA» и получил статью в Википедии здесь .

Прочитав эту статью, я не могу сказать, в чем разница междуочередь SEDA и обычная «обычная» очередь!Оба охватывают понятие разъединения систем посредством использования асинхронных очередей.

Из статьи «SEDA» просто звучит как архитектура, которая состоит из размещения очереди между каждым компонентом.Это правильно?

Но если это просто архитектура, то почему очередь "SEDA" является специальным компонентом Apache Camel?

Ответы [ 3 ]

6 голосов
/ 06 февраля 2012

Очереди SEDA подобны обычной очереди (и, как сказал Питер выше, в Camel они имеют пул потоков, связанный с ними как часть компонента).SEDA - это архитектура.Компонент SEDA в Camel использует очереди в памяти в вашем процессе и является отдельным компонентом, чтобы отличать их от другого компонента очереди в Apache Camel, а именно от компонента JMS.

5 голосов
/ 14 сентября 2016

SEDA - это аббревиатура, обозначающая Staged Event Driven Architecture . Она разработана как механизм для регулирования потока между различными фазами обработки сообщений.Идея состоит в том, чтобы сгладить частоту вывода сообщений из общего процесса таким образом, чтобы он соответствовал входным данным. Это позволяет потокам потребителя enpoint перекладывать работу длительных операций в фоновый режим, тем самым освобождая их для потребления сообщений.от транспорта.Когда обмен передается в конечную точку seda:, он помещается в BlockingQueue.Этот список существует в контексте Camel, что означает, что к этому типу конечной точки могут быть присоединены только те маршруты, которые находятся в одном контексте.По умолчанию очередь не ограничена, хотя это можно изменить, установив атрибут размера в URI потребителя.

По умолчанию один поток, назначенный конечной точке, считывает обмены из списка и обрабатывает их черезмаршрут.Как видно из приведенного примера, можно увеличить число concurrenctConsumers, чтобы обеспечить своевременную обработку бирж из этого списка.

Шаблон SEDA лучше всего подходит для обработки InOnly сообщения, где один маршрут завершает обработку и передает другому на следующий этап.Можно запросить ответ от конечной точки seda:, вызвав его, когда шаблон обмена сообщениями InOut.

Ссылка: Поваренная книга разработчика Apache Camel

1 голос
/ 03 июня 2013

SEDA предлагает разделение компонентов в пределах одного верблюжьего маршрута.Или по этому вопросу в рамках одного процесса.,Это означает, что это помогает вам делать асинхронные вызовы другим компонентам ... это блокировка в памяти.С другой стороны, JMS используется для развязки всей системы. В JMS будет вовлечен внешний брокер. SEDA просто создаст отдельный поток от компонента потребителя

...