Подтвердить что ты не робот

Постоянная рабочая очередь в С#

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

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

Статьи по теме:

4b9b3361

Ответ 1

Я использовал Rabbit MQ в прошлом для проекта для домашних животных, вы можете добавить это в свой список для систем Queue.

Что касается структуры для обертывания очереди, вы можете взглянуть на http://www.nservicebus.com/, мы сделали несколько базовых проектов здесь при работе с этим. И вот быстрый пример для начала: http://meisinger2.wordpress.com/2009/11/09/nservicebus-fifteen-minutes/

Ответ 2

Если вы следуете некоторым рекомендациям, вы можете с успехом использовать базу данных в качестве хранилища очередей, см. Использование таблиц в качестве очередей.

SQL Server поставляется со своей собственной встроенной очередью сообщений, а именно Service Broker. Это позволяет избежать многих ошибок MSMQ, когда речь идет о масштабируемости, надежности и высокой доступности и сценариях аварийного восстановления.

Servcie Broker полностью интегрирован в базу данных (нет внешнего хранилища, одного согласованного резервного копирования/восстановления, одного устройства отказоустойчивости, нет необходимости в дорогостоящем двухфазном DTC между хранилищем сообщений и базой данных, одним единственным T-SQL API для доступ и программирование как сообщений, так и ваших данных), а также имеет некоторые уникальные уникальные функции, такие как транзакционный обмен сообщениями с гарантированной доставкой точно-на заказ, коррелированная блокировка сообщений, внутренняя активация и т.д.

Ответ 3

Я успешно использовал MassTransit в прошлом. Он поддерживает использование MSMQ, а также RabbitMQ.