С# Queue или ServiceBus без зависимостей?
Есть ли продукт (идеально с открытым исходным кодом, но не обязательно), который бы обеспечивал развертывание нулевой зависимости? каждая служебная шина или библиотека очереди, которую я смог найти, зависит от одного из приложений очереди (например, msmq) или базы данных. Я хотел бы получить очень легкое решение, которое я могу просто добавить ссылку на мое приложение, построить его и развернуть с минимальной конфигурацией.
В идеальном мире шина очереди/обслуживания будет работать в IIS и позволит веб-серверам и богатым клиентам разговаривать с ним.
Такой инструмент идеально подходит для быстрого прототипирования больших распределенных систем на локальной машине разработки.
Ответы
Ответ 1
Rhino Queues от Ayende - это именно то, что вы ищете, это сообщение в блоге, представляющее его:
http://ayende.com/Blog/archive/2008/08/01/Rhino-Queues.aspx
Я думаю, что все ограничения, упомянутые в этом посте, были исправлены с тех пор.
Из сообщения в блоге, какие очереди носорогов:
- Служба XCopyable, Zero Administration, Embedded, Async queueing
- Надежность перед сетью.
- отключает поддержку System.Transactions.
- Fast
- Работает через HTTP
Ответ 2
В том же духе к предложению ShuggyCoUk вы можете настроить очередь (или очереди) с помощью встроенной в Windows базы данных ESENT (она уже установлена в Windows). Существует библиотека управляемого управляемого кода (с открытым исходным кодом): http://www.codeplex.com/ManagedEsent. Если вы придерживаетесь записи/чтения CLOB или BLOB, это должно работать нормально. Если вы хотите быть действительно умным, вы можете использовать NServiceBus и написать (внести свой вклад?) Хранение и перенос подписки на ESENT. Есть несколько набегов на использование ESENT на блог Айенде (вам придется высунуть свой репозиторий SVN для сочных битов).
Ответ 3
Если вы счастливы быть:
- Специфичные для Windows
- Ограничено локальным доменом
- Серьезно ограниченный размер поддерживаемого сообщения
- Оберните базовые вызовы win32 в P/Invoke
- Справитесь с самим опросом.
- Сделка с хаками, необходимыми для обеспечения обратной связи.
- Обратитесь к общей конфигурации, необходимой для синхронизации имен.
Тогда достаточно быстрой оболочки вокруг окон MailSlot API.
Этот простой пример является разумной основой для начала.
В этой статье есть дополнительная информация, но предполагается, что использование используется через элемент управления (а не компонент, как и должно быть) так как некоторая безнадежная интеграция с WinForms должна учитываться для случайного чтения, а не для базы для любой библиотеки.
Эта статья является С++, но имеет более высокий стандарт (и комментатор расширил ее для поддержки пакетной обработки больших сообщений на несколько небольших из них).
Вы получаете 424 байт (так с символами .Net 212), вы можете отказаться от ASCII, чтобы удвоить свою полезную длину сообщения, если вы говорите о тексте.
Обратите внимание, что, несмотря на его простоту, ограничения и отсутствие функций, он обеспечивает доставку многоадресной рассылки, что часто бывает сложным для слоя на протоколе точка-точка.
Ответ 4
Этот ayende post предоставляет и интересное сравнение трех служебных шин. Мы используем NServiceBus и думаем, если не ясно, что Udi Dahan будет отвечать на то, как вы подключаете ненужную очередь.
Мы работаем с использованием MSMQ с радостью, но есть другие варианты, и в теории он должен быть открыт практически для всех, учитывая, что вы можете потерять некоторую надежность и долговечность в зависимости от вашего выбора.
Ответ 5
Почему бы не Служба сообщений Amazon Служба простой очереди?
Ответ 6
Мы переместили наши проекты с MSMQ на ActiveMQ. его действительно лучше:)
ActiveMQ - это очередь с открытым исходным кодом, основанная на веб-сервере Apache.
Мы использовали его в производстве на часто встречающемся частотном потоке данных, где msmq имеет много проблем (мы работаем с msmq в год)
Реализация csharp nms
Ответ 7
В настоящее время я работаю на сервисной шине с открытым исходным кодом на основе WCF. Вы можете найти его здесь: http://rockbus.codeplex.com/. Он поддерживает динамические (@run-time) подписки, репозиторий реквизитов (база данных), подключаемые транспорты, маршрутизацию на основе контента на основе XPath, транзакционную доставку по протоколам wcf, доставку по всему периметру, возможность подключения подписки и т.д. Посмотрите!
Ответ 8
Думали ли вы об использовании службы, например IronMQ, http://Iron.io?
У вас не было бы никаких зависимостей, можно было бы быстро прототип приложений без настройки инфраструктуры очередей, и он был бы очень доступным и быстрым.
В настоящее время не существует локально устанавливаемой версии, но она основана на предстоящем протоколе OpenStack, поэтому будет.
Btw Я работаю на Iron.
Ответ 9
Попробуйте https://github.com/mcintyre321/PieQ - это моя попытка написать поточную, постоянную, нулевую конфигурацию, встроенную рабочую очередь. Это, вероятно, нуждается в небольшой любви, но я думаю, что это может быть тот инструмент, который вы ищете.
Ответ 10
Я разработал библиотеку JMS InMemory, которая может использоваться для тестирования JMS-приложений без подключения к JMS-провайдерам/серверу (подумайте о hsqldb). Вам не нужно иметь дело с подключением или протоколом или что-то еще, все, что вам нужно сделать, это отправлять и получать сообщения.
https://github.com/Dhana-Krishnasamy/InMemoryJMS