Мне нужно иметь 2 (или, возможно, 3) непрерывно выполняемых «грануса» программы в Ruby - поток связи, поток рендеринга и, возможно, кеширующий поток.Темы или DRb?
Идея потока рендеринга показывает слайд-шоу (определение которого читается из файла), а все слайды извлекаются с удаленного HTTP-сервера по потоку связи. Отрисовка должна быть непрерывной и без остановок (отсюда вероятная необходимость кэширования). Файл может меняться в течение всей жизни программы и, следовательно, необходимо повторно разбор (на лету).
Я бы хотел послать сообщения между «гранями», например, когда поток коммитов получает целую «главу» шоу, поток рендеринга можно запустить, прежде чем ждать, пока все шоу будет загружено, например, и так на.
Должен ли я использовать потоки Ruby или DRb? Как передать сообщения между потоками?
Благодарим за отзыв!
Я рассматриваю только DRb из-за возможностей передачи сообщений - я не могу иметь это с потоками ... правильно? Я имею в виду, я могу взломать его с помощью мьютексов, но это все еще взлом ... верно? :) DRb кажется намного проще. –
Вам действительно нужна система передачи сообщений, если вам нужно несколько процессов. Это не похоже на то, что вам нужно несколько процессов, поэтому я бы рекомендовал сохранить его простым. Я делаю что-то похожее на себя (собираю удаленные данные, обрабатываю их и выдаю вывод), и простая система потоковой обработки будет работать отлично - у меня есть поток для каждого этапа и один дополнительный поток - нет необходимости в DRb. Но используйте то, что считаете нужным! Удачи! –
IMHO, предложение RabbitMQ - правильный путь. Раньше я делал такие вещи как с DRb, так и с RabbitMQ, а решение DRb было менее идеальным. RabbitMQ на порядок быстрее, и если вы используете библиотеку Bunny celldee, это также намного проще. –