Вопрос

Моя организация готовится внедрить новую систему, которая является приложением asp.net. Приложение будет иметь большую очередь автономной работы, которая инициируется сайтом. Эта очередь будет содержать различные типы действий, в идеале в сообщениях XML. Подумайте о таких вещах, как уведомления по электронной почте, запланированные задания и т. Д.

В прошлом организация, вероятно, использовала MSMQ для выполнения этой задачи. Тем не менее, они считают MSMQ старой школой (и я с ними частично согласен), поэтому мы собираемся провести архитектурный анализ, чтобы определить «лучший» вариант. Решение.

На мой взгляд, есть несколько возможных вариантов:

 1. Придерживайтесь новой реализации на последней версии MSMQ - не идеальный, но известный продукт.
 2. Используйте Windows Workflow Foundation, о котором я слышал от нескольких других разработчиков, которые использовали это для подобных вещей.
 3. Разработайте индивидуальное решение для базы данных.

Я пропускаю какие-либо очевидные решения? В идеале это будет продукт Microsoft, но на самом деле ему просто нужно работать в центральном магазине Microsoft.

Я обеспокоен следующим:
 1. Простота внедрения и обслуживания
 2. Решение, которое будет некоторое время
 3. Способен обрабатывать большой объем строк с данными XML среднего размера.
 4. Абсолютно надежная система очередей с быстрым обновлением (несколько служебных процессов, вероятно, будут извлекать записи из очереди для их обработки).

Это было полезно?

Решение

Чтение поста кажется единственной причиной, по которой вы считаете, что MSMQ не подходит, потому что кто-то считает, что это «старая школа». Я не думаю, что это достаточно веская причина, чтобы не использовать его, так как похоже, что ваша компания имеет опыт работы с ним, поэтому не будет никакой кривой обучения, а это означает простоту внедрения и обслуживания.

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

Другие советы

Я бы посоветовал заглянуть в WCF, вы можете настроить его, чтобы указать постоянный обмен сообщениями в очереди, и он использует технологию MSMQ под прикрытием. WCF-абстракция / интерфейс и технологии должны существовать довольно долго.

Я согласен с Moose-in-the-the-jungle, что MSMQ, вероятно, то, что вы должны придерживаться.

Я бы, возможно, исследовал некоторые альтернативные API, которые используют MSMQ под прикрытием, например, nServiceBus из Udi Dahan.

В качестве альтернативы ActiveMQ (упомянутой выше) существует RabbitMQ с открытым исходным кодом. Из того, что они говорят, он прекрасно интегрируется с ASP.NET и WCF.

http://www.rabbitmq.com/

Вы изучили компонент Service Broker в SQL Server? Это система очередей, которая использует базу данных в качестве резервного хранилища.

У вас есть несколько вариантов:

<Ол>
  • Biztalk: он создан для гарантированной доставки сообщений и маршрутизации на корпоративном уровне. Его сложно настроить, он дорогой, и у него крутая кривая обучения, однако, как только вы включите его, он будет твердым.

  • MSMQ: быстро, дешево, как в бесплатном, простом в использовании и просто работает.

  • SQL Service Broker. Это шаг вперед от MSMQ, но огромный шаг вниз от Biztalk.

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

    Вы можете посмотреть на использование брокера сообщений с открытым исходным кодом, такого как Apache ActiveMQ

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

    Очередь - это то, что вы не хотите портить себе, положитесь на что-то готовое, что уже было проверено многими и многими людьми.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top