Встраиваемые очереди? - PullRequest
       14

Встраиваемые очереди?

3 голосов
/ 10 августа 2011

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

Таким образом, я также хочу убедиться, что ни одно сообщение никогда не будет потеряно (если не произойдет сбой жесткого диска).

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

Сериализация моих сообщений в JSON и их сохранение в SQLite - это тривиально и просто, но прежде чем я это сделаю, мне интересно, есть ли стандартизированная (предпочтительно AMQP-совместимая ) очередь, которая мне не нужна установка и может быть встроена в приложение?

Ответы [ 3 ]

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

Я действительно думаю, что вы должны пересмотреть MSMQ.

  1. Он устанавливается по умолчанию в серверных версиях Windows.
  2. Установка на не-серверных версиях Windows тривиальна.
  3. Предоставляется встроенный пользовательский интерфейсдля наблюдения за очередью
  4. Я не знаю, какие у вас стандарты "тяжелые и загадочные" - но я просто использовал их впервые в проекте, и это была самая легкая часть приложения.Я, конечно, не думаю, что это намного более тяжело, чем хранить очередь в базе данных самостоятельно.
  5. Если вы предпочитаете использовать JSON, вы можете сами сериализовать сообщения и сохранить их в виде строки
  6. ВыМожно настроить очередь для восстановления - поэтому хранение очереди на диске, а не в памяти

Единственное серьезное возражение, которое я вижу, это необходимость установки MSMQ.Если вам нужно развернуть это приложение повсеместно в разных версиях Windows, я вижу в этом серьезную проблему.

0 голосов
/ 10 августа 2011

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

RabbitMQ довольно легковесен: установка по умолчанию занимает всего несколько МБ, и для его работы обычно требуется около 11 МБ памяти.Он также предоставляет расширение AMQP, Publisher Confirms , которое можно использовать для гарантии того, что как только сервер примет сообщение журнала, оно не будет потеряно, если только жесткий диск не умрет.Расширение нестандартно и, вероятно, не поддерживается другими брокерами.

0 голосов
/ 10 августа 2011

Graylog2 - это централизованное решение для ведения журнала, которое принимает записи журнала из сообщений AMQP.Возможно, вы могли бы адаптировать его к своему варианту использования.

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

AMQP не требует установки, потому чтоэто протокол.Вам просто нужна клиентская библиотека для .NET.Однако вам потребуется установить MQ-брокер на сервере в вашей локальной сети, чтобы управлять потоком сообщений.RabbitMQ широко используется, потому что его легко установить.

Кроме того, после того, как вы начнете отправлять сообщения, вам также потребуется иметь процесс в сети, который получает их и что-то с ними делает, например, пишетв дБ.

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