Брокер сообщений потребитель / производитель с переназначением, когда клиент выходит из строя? - PullRequest
3 голосов
/ 21 сентября 2011

Я ищу API брокера сообщений, чтобы использовать его с c #.

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

И вот особые требования, которые у меня есть:

  • Если клиентполучил работу, но не может ответить в течение определенного времени, тогда другой клиент должен выполнить эту работу.
  • Более одной очереди и приоритетов
  • Если возможно, он должен работать с большими очередями сообщений (этоспособ, которым я мог бы просто загрузить все работы иногда в месяц и забыть об этом
  • безопасная связь была бы хороша.
  • API для общения с брокером из c #. Сколько работы сделано? Что еще?сделать? Удалить некоторые задания ...
  • Если бы доступная репликация на другого брокера была бы полезной.
  • Брокеру необходимо запустить на Windows

Что не такпроблема:

  • низкая задержка (нет проблем, когда сообщение требует минут)

Знаете ли вы такого брокера сообщений, который можно использовать бесплатно?

1 Ответ

1 голос
/ 21 сентября 2011

RabbitMQ и несколько других реализаций AMQP удовлетворяют большинству (если не всем) этих требований.

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

  • Поддерживается множество очередей (и фактически многих брокеров) в различных конфигурациях
  • Особенно хорошо масштабируется, даже для очень больших очередей сообщений: http://www.rabbitmq.com/faq.html#performance
  • Шифрование поддерживается: http://www.rabbitmq.com/faq.html#channel-encryption
  • Существует руководство пользователя по .NET Client и документы API: http://www.rabbitmq.com/documentation.html
  • В случае смерти брокера происходит аварийное переключение: http://www.rabbitmq.com/clustering.html
  • Он работает в Windows, Linux и, возможно, во всем, что имеет реализацию Erlang
...