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

С# Queue или ServiceBus без зависимостей?

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

В идеальном мире шина очереди/обслуживания будет работать в IIS и позволит веб-серверам и богатым клиентам разговаривать с ним.

Такой инструмент идеально подходит для быстрого прототипирования больших распределенных систем на локальной машине разработки.

4b9b3361

Ответ 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 с радостью, но есть другие варианты, и в теории он должен быть открыт практически для всех, учитывая, что вы можете потерять некоторую надежность и долговечность в зависимости от вашего выбора.

Ответ 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