Альтернатива обмену сообщениями JMS для параллельной обработки в Torquebox

У меня есть приложение, которое периодически вызывает какую-либо службу для данных (используя планировщики крутящего момента), и когда доступен набор данных, оно должно обрабатывать каждую «запись данных» отдельно.

Я хотел бы обрабатывать эти записи одновременно для повышения производительности, и моей первой мыслью было настроить очередь jms (доступную в крутящем моменте из коробки), чтобы запланированное задание помещало все полученные данные в очередь, и каждая запись будет выбрана вверх (для одного из нескольких подключенных приемников) для обработки.

Но не слишком ли сложно помещать очередь JMS между элементами одного и того же приложения? Любые другие подходы, которые вы могли бы предложить здесь?


person grafthez    schedule 22.02.2013    source источник


Ответы (2)


Очередь JMS может быть вовсе не плохим решением, попробуйте ее и посмотрите, как она работает для вас. Когда они так же просты в использовании, как Torquebox, нет необходимости в чрезмерной инженерии.

Если вы хотите что-то менее сложное, я рекомендую использовать собственный Java. BlockingQueue, либо LinkedBlockingQueue или ArrayBlockingQueue в зависимости от точный вариант использования.

Это обычные наборы, такие как массивы или хэши, поэтому вам нужно где-то их создать и передать в компоненты, которые вы хотите опубликовать и использовать из них. У них также нет понятия подтверждения, как у очередей JMS.

person Theo    schedule 23.02.2013

Как насчет использования очереди сообщений Java (как вы упомянули), поскольку HornetQ является частью JBoss/Torquebox, а затем использовать процессор сообщений для обработки сообщений. Вы также можете указать уровень параллелизма в файле Torquebox.rb (или .yml).

Your_Scheduled_Job -> /queues/my_queue -> TorqueBox::Messaging::MessageProcessor

В вашем файле config/torquebox.rb вы можете указать параллелизм и имя процессора обмена сообщениями:

queue '/queues/my_queue' do
  processor MyMessageProcessor do
    concurrency 5
  end
end

Процессор обмена сообщениями будет обрабатывать сообщения в очереди одновременно, без каких-либо других шагов.

Я также все еще экспериментирую с параллелизмом Torquebox и Ruby, и это то, что я пытаюсь реализовать в эти дни...

person bud    schedule 26.03.2013