Очередь C # или ServiceBus без зависимостей? - PullRequest
19 голосов
/ 05 февраля 2009

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

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

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

Ответы [ 10 ]

16 голосов
/ 17 февраля 2009

Rhino Queues из Ayende - это именно то, что вы ищете, это сообщение в блоге, представляющее это:

http://ayende.com/Blog/archive/2008/08/01/Rhino-Queues.aspx

Я думаю, что все ограничения, упомянутые в этом посте, были исправлены с тех пор.

Из сообщения в блоге, что такое очереди на носорогов:

  • XCopyable, нулевое администрирование, встроенный сервис асинхронной очереди
  • Надежность перед лицом сетей
  • Отключения системы. Поддержка транзакций
  • Быстрая
  • Работает по HTTP
5 голосов
/ 16 февраля 2009

Аналогично предложению ShuggyCoUk, вы можете настроить очередь (или очереди), используя встроенную в Windows базу данных ESENT (поставляется уже с Windows). Существует библиотека доступа к управляемому коду (с открытым исходным кодом): http://www.codeplex.com/ManagedEsent. Если вы продолжаете писать / читать CLOB или BLOB, все должно работать нормально. Если вы хотите быть по-настоящему умным, вы можете использовать NServiceBus и писать (вносить?) Хранение и транспорт подписки со вкусом ESENT. Есть некоторые попытки использовать ESENT и в блоге Айенде (вам придется поискать его SVN-репозиторий для сочных битов).

2 голосов
/ 15 февраля 2009

Почему бы не Служба сообщений Amazon Simple Queue Service?

2 голосов
/ 13 февраля 2009

Этот ayende post предоставляет и интересное сравнение трех сервисных автобусов. Мы используем NServiceBus и думаем, если неясно, что Уди Дахан будет реагировать на то, как вы подключите независимую очередь.

Мы успешно используем MSMQ, но есть и другие варианты, и теоретически он должен быть открыт практически для всего, учитывая, что вы можете потерять некоторую надежность и долговечность в зависимости от вашего выбора.

2 голосов
/ 13 февраля 2009

Если вы счастливы быть:

  1. для Windows
  2. Ограничено локальным доменом
  3. Серьезно ограничен поддерживаемый размер сообщения
  4. Обернуть основные вызовы win32 в P / Invoke
  5. Разберитесь с опросом самостоятельно
  6. Разобраться с взломами, необходимыми для обратной связи
  7. Работа с общей конфигурацией, необходимой для синхронизации имен

Тогда может быть достаточно быстрой оболочки вокруг окон MailSlot API .

Этот простой пример является разумным основанием для начала.

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

Эта статья написана на C ++, но имеет более высокий стандарт (и комментатор расширил ее для поддержки пакетирования больших сообщений в несколько меньших).

Вы получаете 424 байта (то есть с .Net 212 символами), вы можете захотеть перейти на ASCII, чтобы удвоить полезную длину сообщения, если вы говорите текст.

Обратите внимание, что, несмотря на свою простоту, ограничения и отсутствие функций, он действительно обеспечивает многоадресную доставку, что часто сложно сложить на уровне протокола точка-точка самостоятельно.

1 голос
/ 01 августа 2011

В настоящее время я работаю над сервисной шиной с открытым исходным кодом WCF. Вы можете найти его здесь: http://rockbus.codeplex.com/. Поддерживаются динамические (@ run-time) подписки, хранилище подписок (база данных), подключаемые транспорты, основанная на XPath маршрутизация на основе содержимого, транзакционная доставка по протоколам wcf, круговая доставка, сменная подписка оценка и многое другое. Посмотри!

1 голос
/ 06 февраля 2009

Мы переместили наши проекты из MSMQ в ActiveMQ . это действительно лучше :) 1003 * ActiveMQ - это очередь с открытым исходным кодом , основанная на веб-сервере Apache.
Мы использовали его в работе с высокой частотой обработки данных, где у msmq много проблем (мы работаем с msmq год)
Реализация csharp: nms

0 голосов
/ 28 ноября 2013

Я разработал библиотеку JMS InMemory, которую можно использовать для тестирования приложений JMS без реального подключения к провайдерам / серверу JMS (представьте себе hsqldb). Вам не нужно иметь дело с соединением, протоколом или чем-то еще, все, что вам нужно сделать, это отправлять и получать сообщения.

https://github.com/Dhana-Krishnasamy/InMemoryJMS

0 голосов
/ 12 апреля 2013

Попробуйте https://github.com/mcintyre321/PieQ - это моя попытка написать потокобезопасную, постоянную, с нулевой конфигурацией, встроенную рабочую очередь. Наверное, нужна небольшая любовь, но я думаю, что это тот инструмент, который вы ищете.

0 голосов
/ 03 марта 2013

Задумывались ли вы об использовании такого сервиса, как IronMQ, по номеру http://Iron.io?

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

В настоящее время нет версии для локальной установки, но она основана на готовящемся протоколе OpenStack, так что будет.

Кстати, я работаю на Айрон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...