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

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

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

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


person Joel Martinez    schedule 05.02.2009    source источник


Ответы (10)


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

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

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

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

  • XCopyable, Zero Administration, Embedded, Асинхронная служба очередей
  • Надежный перед лицом сетей
  • сбои в работе System.Transactions support
  • Быстрый
  • Работает через HTTP
person Nir    schedule 17.02.2009
comment
ЭТО нехорошо ... если сервер перезагружается, все элементы очереди в памяти исчезают - person user1034912; 02.03.2013
comment
@ user1034912 - это не так; сообщения сохраняются в локальной базе данных esent. Я думаю, что на момент написания сообщения в блоге этого еще не было. - person Marijn; 03.09.2013

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

person Garo Yeriazarian    schedule 16.02.2009

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

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

Затем быстрая оболочка для MailSlot API в Windows. может быть достаточно.

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

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

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

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

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

person ShuggyCoUk    schedule 13.02.2009

Это Пост айенде дает и интересное сравнение трех служебных автобусов. Мы используем NServiceBus и думаем, если не ясно, что Udi Dahan отреагирует на то, как вы подключите независимую очередь.

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

person dove    schedule 13.02.2009

Почему бы не использовать службу сообщений Amazon Simple Queue Service?

person David Robbins    schedule 15.02.2009
comment
Это определенно добавляет значительных проблем с задержкой в ​​сети. - person mwjackson; 23.10.2009

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

person Avram    schedule 06.02.2009

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

person Bram    schedule 01.08.2011

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

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

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

Между прочим, я работаю на Iron.

person Community    schedule 02.03.2013
comment
Привет, Чад; Спасибо за ответ! Хочу отметить, что все ваши недавние сообщения были рекламой продукции вашей компании. Это нормально, когда время от времени упоминаются ваши продукты, но похоже, что единственная причина, по которой вы здесь, - это продвижение. Это может привести к тому, что ваши сообщения будут помечены как спам или даже ваша учетная запись будет удалена вместе с сообщениями. Пожалуйста, подумайте об ответах на вопросы о кодировании, чтобы помочь другим программистам, а не только о продвижении продуктов вашей компании. - person Andrew Barber; 03.03.2013
comment
Конечно, Эндрю, спасибо за подсказку. Я просто упоминаю продукты там, где это имеет смысл. Я продолжу консультировать по архитектуре и другим возможностям. Ваше здоровье. - person Chad; 04.03.2013

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

person mcintyre321    schedule 12.04.2013

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

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

person Dhana Krishnasamy    schedule 28.11.2013