Система очереди сообщений - PullRequest
15 голосов
/ 18 февраля 2010

Я нахожусь в процессе написания системы очереди сообщений.

Мой вопрос ... Лучше ли делать эту очередь с файлами или в базе данных?

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

Если это файлы, я думаю, вы просто постоянно следите за папкой и выполняете на этом основании?

BR

Ответы [ 6 ]

28 голосов
/ 18 февраля 2010

Не заново изобретать колесо .

[Редактировать: обновлено в 2014 году, теперь ссылка на MQ кролика, поскольку Ayende перешла к созданию баз данных документов, а не очередей сообщений, но опять-таки появился RabbitMQ. Я не буду писать это, но теперь сообщения должны содержать 30 символов, поэтому мне нужно немного поболтать.]

26 голосов
/ 18 февраля 2010

Я выбираю опцию "C" - использовать очередь сообщений, уже встроенную в Windows:

https://msdn.microsoft.com/en-us/library/ms973860.aspx

5 голосов
/ 18 февраля 2010

каковы ваши критерии принятия решения «лучше»? спектакль? масштабируемость? надежность? Стоимость?

Основные компромиссы:

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

файловая система - дешевле, проще, меньше движущихся частей (по крайней мере, на начальном этапе)

Сначала вы можете посмотреть на существующие решения - MSMQ, брокер SQL Server, библиотеки с открытым исходным кодом, такие как очереди Rhino (http://ayende.com/Blog/archive/2008/08/01/Rhino-Queues.aspx)

3 голосов
/ 18 февраля 2010

Как можно захотеть заглянуть в MSMQ

2 голосов
/ 18 февраля 2010

Вы пишете систему очереди сообщений, потому что хотите написать систему очереди сообщений;или это просто часть решения большой проблемы?

Я бы предложил не писать новую систему очередей сообщений.Вы можете использовать MSMQ или что-то еще с полки.

2 голосов
/ 18 февраля 2010

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

...