Для чего нужны очереди msmq
Обзор Message Queuing
Обмен сообщениями может применяться в сценарии автономной работы, в котором не требуется, чтобы клиент и сервер обязательно запускались в одно и то же время.
Прежде чем углубляться в детали программирования с использованием Message Queuing, в данной статье я предлагаю ознакомиться с основными концепциями организации очередей сообщений и сравнить их с концепциями синхронного и асинхронного программирования.
При синхронном программировании, когда вызывается метод, то вызвавший его код должен ожидать, пока метод не завершит свою работу. При асинхронном программировании вызывающий поток запускает метод и параллельно продолжает свою работу. Асинхронное программирование основано на применении делегатов, библиотек классов, которые уже поддерживают асинхронные методы (например, прокси-классы веб-служб и классы из пространств System.Net и System.IO), либо специальных потоков. Как при синхронном, так и при асинхронном программировании клиент и сервер должны работать в одно и то же время.
Хотя Message Queuing работает асинхронно, поскольку клиент (отправитель) не ожидает прочтения получателем (сервером) оправленных ему данных, между Message Queuing и асинхронным программированием существует принципиальная разница: Message Queuing может выполняться в автономной (отключенной) среде. На момент отправки данных их получатель может быть отключен. Позднее, когда получатель подключится, он получит данные без вмешательства отправляющего приложения.
Конечно, может случиться так, что почта не будет прочитана никогда, а просто проигнорирована. Такова природа отключенных коммуникаций. Чтобы избежать этой проблемы, можно запросить ответ или подтверждение факта прочтения письма. Если ответ не придет в течение определенного времени, возможно, придется как-то справляться с таким «исключением». Все это также возможно в Message Queuing.
Message Queuing, по сути, можно считать технологией для обмена электронными сообщениями между приложениями, а не людьми. Она обладает множеством функциональных возможностей, которые в других службах обмена сообщениями не доступны: гарантированием доставки, применением транзакций, получением подтверждений, экспресс-режимом, использующим память, и т.д. Message Queuing предлагает массу полезных средств для коммуникаций между приложениями.
С помощью Message Queuing можно отправлять, принимать и маршрутизировать сообщения в подключенной и отключенной (автономной) среде. На рисунке ниже показан очень простой способ использования сообщений. Отправитель посылает сообщения в очередь сообщений, а получатель принимает их из этой очереди:
Когда следует использовать Message Queuing
Одной из ситуаций, в которых удобно применять Message Queuing — это когда клиентское приложение часто отключается от сети (например, у коммивояжера, навещающего заказчиков на местах). Коммивояжер может вводить данные заказа непосредственно у заказчика. Приложение ставит сообщение о каждом заказе в очередь сообщений, находящуюся на клиентской системе. Как только коммивояжер возвращается в свой офис, заказ автоматически передается из очереди сообщений клиентской системы в очередь сообщений целевой системы, где и обрабатывается.
Помимо портативного компьютера, коммивояжер может использовать устройство Pocket Windows, где также доступно Message Queuing.
Технология Message Queuing может быть полезна и в подключенной среде. Представьте сайт электронной коммерции (показан на рисунке ниже), где в определенные периоды времени сервер полностью загружен обработкой заказов, например, в ранний вечер и в выходные, при этом по ночам нагрузка значительно уменьшается. Решение проблемы может состоять в приобретении более быстрого сервера или в добавлении дополнительных серверов к системе, чтобы они справлялись с пиковыми нагрузками.
Однако существует более дешевое решение: сгладить пиковые нагрузки, сдвинув транзакции со времени максимальных нагрузок на время с низкой загрузкой. В такой схеме заказы отправляются в очередь сообщений, а принимающая сторона читает их тогда, когда это удобно системе базы данных. Таким образом, нагрузка на систему сглаживается по времени, так что сервер, обрабатывающий транзакции, может быть дешевле и не требовать модернизации:
Функциональные возможности Message Queuing
Технология Message Queuing является службой, которая поставляется как часть операционной системы Windows. Ниже перечислены ее основные функциональные возможности:
Сообщения могут пересылаться в автономной среде. То есть приложению-отправителю и приложению-получателю вовсе не обязательно выполняться в одно и то же время.
В экспресс-режиме сообщения могут пересылаться очень быстро. В экспресс-режиме сообщения просто сохраняются в памяти.
Для механизма восстановления сообщения могут отправляться с гарантированной доставкой. Такие сообщения сохраняются в файлах и доставляются даже в случае перезагрузки сервера.
Очереди сообщений могут защищаться с применением списков контроля доступа и указания в них, каким пользователям разрешено отправлять или получать сообщения из очереди. Кроме того, сообщения могут шифроваться для исключения вероятности их прочтения с помощью сетевых анализаторов пакетов, а также снабжаться приоритетами, чтобы те из них, которые имеют более высокий приоритет, обрабатывались быстрее.
В Message Queuing 3.0 поддерживается возможность отправки многоадресных (multicast) сообщений.
В Message Queuing 4.0 поддерживается возможность распознавания вредоносных сообщений. Для таких сообщений может быть определена специальная очередь.
Например, в случае, если после прочтения сообщения из обычной очереди, далее оно должно вставляться в базу данных, но по какой-то причине этого не происходит, это сообщение может быть отправлено в очередь вредоносных сообщений. Впоследствии этой очередью вредоносных сообщений должен кто-нибудь заняться и выяснить, по какой причине адрес сообщения не удалось преобразовать.
В Message Queuing 5.0 поддерживаются более безопасные алгоритмы аутентификации, и может обрабатываться большее количество очередей. (В Message Queuing 4.0 при обработке нескольких тысяч очередей начинали возникать проблемы с производительностью.)
Из-за того, что Message Queuing является частью операционной системы, установить версию Message Queuing 5.0 в системе Windows XP или Windows Server 2003 не получится. Эта версия входит в состав ОС Windows Server 2008 R2 и Windows 7.
Продукты Message Queuing
Версия Message Queuing 5.0 поставляется в составе Windows 7 и Windows Server 2008 R2. В Windows 2000 входила версия Message Queuing 2.0, в которой не было поддержки ни протокола HTTP, ни многоадресных сообщений. Версия Message Queuing 3.0 поставлялась в составе Windows XP и Windows Server 2003, а версия Message Queuing 4.0 — в составе Windows Vista и Windows Server 2003.
При использовании ссылки Turn Windows Features on or off (Включение или отключение компонентов Windows), которая предлагается в Windows 7 в окне Configuring Programs and Features (Программы и компоненты), можно обнаружить отдельный раздел с опциями, касающимися Message Queuing:
В этом разделе доступны для выбора перечисленные ниже компоненты:
Microsoft Message Queue (MSMQ) Server Core
Основные компоненты сервера очереди сообщений (MSMQ), которые необходимы для получения базовой функциональности Message Queuing.
Active Directory Domain Services Integration
Интеграция MSMQ доменных служб Active Directory. Это средство позволяет записывать имена очередей сообщений в Active Directory. С помощью этой опции можно находить очереди в Active Directory и защищать их на основе пользователей и групп пользователей Windows.
MSMQ HTTP Support
Поддержка протокола HTTP MSMQ. Поддержка MSMQ HTTP позволяет отправлять и принимать сообщения, используя протокол HTTP.
Triggers
С помощью триггеров создаются экземпляры приложений при поступлении нового сообщения.
Multicast Support
Поддержка многоадресной рассылки. Позволяет отправлять сообщения группам серверов.
MSMQ DCOM Proxy
С помощью DCOM-прокси система может подключаться к удаленному серверу, используя API-интерфейс DCOM.
После установки Message Queuing в системе должна быть обязательно запущена служба Message Queuing (показана на рисунке). Эта служба читает и записывает сообщения, а также взаимодействует с другими серверами Message Queuing для осуществления маршрутизации сообщений по сети:
Очередь сообщений (Message Queue)
Очередь сообщений (Message Queue)
Этот пост рассказывает об очередях сообщений — почему вы должны знать о них, думать при планировании архитектуры и использовать их в вашем приложении.
Почему очереди сообщений?
Сообщения, наряду с блоками вычисления и хранения, составляют три основных блока почти в каждой блок-схеме системы. Очереди сообщений, по существу, являются связующим звеном между различными процессами в ваших приложениях и обеспечивают надежный и масштабируемый интерфейс взаимодействия с другими подключенными системами и устройствами.
О́чередь — структура данных с дисциплиной доступа к элементам «первый пришёл — первый вышел». Добавление элемента возможно лишь в конец очереди, выборка — только из начала очереди, при этом выбранный элемент из очереди удаляется.
Использование очереди сообщений
Почему SaaS?
Добавление очереди сообщений для облачных приложений имеет смысл, только если есть чистый выигрыш в плане установки и эксплуатации. Добавление дополнительного архитектурного слоя отвечающего за очереди сообщений — непростая задача, особенно если вы решили использовать собственное решение или установить на свои сервера стороннее, так как это привнесёт дополнительные затраты на мониторинг, настройку, управление и повлияет на общую надёжность и безопасность системы.
Когда очереди сообщений легки в установке, просты в использовании, высоко доступны и чрезвычайно надёжны — все становиться гораздо проще.
Тут уместна аналогия получения энергии. Прогресс шёл от ветряных мельниц и угольных печей до промышленных электростанций и линий электропередач.Этот последний шаг — индустриализация энергии — изменило лик промышленности в мире. Это снизило затраты на строительство и производство, изменило города, заводы, и дома, и позволило создать новые изобретения, услуги и виды бизнеса.
Аналогичным образом, путём подключения служб очередей сообщений, разработчики больше не должны поддерживать огромный наборов сервисов, работающих на нескольких серверах и не опасаться простоя в результате отказа систем. В современном мире поставщики услуг берут на себя ответственность за управления серверами, API и другими ресурсами, а разработчик абстрагируясь от большинства физических ограничений может сконцентрироваться на реализации своей идеи.
Преимущества перехода на облачные очереди сообщений включают в себя:
С чего начать?
PS Я надеюсь мне удалось заронить каплю сомнения в выбор «поставить свой сервер MQ или использовать сторонний сервис» и заинтересовать в существующих SaaS решениях в области очередей сообщений.
Зачем Windows 10 нужна служба очереди сообщений и почему она установлена по умолчанию?
я обновил две системы с Windows 7 до 10, и обе имеют службу MSMQ, установленную после обновления. Ни одна из этих систем не была установлена раньше.
наличие службы не является проблемой само по себе, но он или служба зависимостей прослушивает TCP-порт 80 через Microsoft HTTP API (системный процесс PID 4), и я не могу запустить Apache из-за этого.
до сих пор мои поиски ответов были бесплодны, потому что большинство результатов, которые я нахожу, имеют дело с установка и настройка MSMQ, но не это цель на недавно установленной системе Win10.
У меня два вопроса:
1 ответов
что такое MSMQ?
технология Microsoft Message Queuing (MSMQ) позволяет приложениям в гетерогенных сети и системы, которые могут быть временно отключены. MSMQ обеспечивает гарантированная доставка сообщений, эффективная маршрутизация, обмен сообщениями на основе приоритетов. Он может быть использован для реализации решения асинхронный и синхронный обмен сообщениями варианты развития.
от пользователя Переполнение Стека:
это просто администратор очередей.
вы можете отправлять объекты (сериализованные) в очередь, где они будут находиться пока вы не получите их. Обычно используется для отправки сообщений или объектов между применениями в decoupled путе.
Это не имеет ничего общего с веб-сервисов, это две разные вещи
вы можете отключить его? Что происходит?
когда служба msmq удаляется следующие действия осуществляется:
в двух словах
служба начала приходить установлен на Windows 8 и up systems (насколько мне известно), поэтому вы не видели его на 7. Удаление его влияет только на себя, и если вы не используете его, то ничего не должно быть затронуто.
отключив службу вы знаете, как это сделать, но вы также можете удалить его с помощью Add & Remove Features
Что такое очередь сообщений Microsoft (MSMQ)? Как это работает?
Мне нужно работать с MSMQ (очередь сообщений Microsoft). Что это, для чего это, как это работает? Чем он отличается от веб-сервисов?
9 ответов
Как указано в его имени, это просто администратор очередей.
вы можете отправлять объекты (сериализованные) в очередь, где они будут оставаться, пока вы их не получите. Он обычно используется для отправки сообщений или объектов между приложениями развязанным способом
Это не имеет ничего общего с веб-сервисов, это две разные вещи
информация о Служба msmq:
информация о веб-сервисах:
при всем уважении к ответу @Juan, оба являются способами обмена данными между двумя отключенными процессами, т. е. межпроцессными каналами связи (IPC). Очереди сообщений являются асинхронными, а веб-службы-синхронными. Для этого они используют разные протоколы и серверные службы, поэтому они совершенно разные по реализации, но схожие по назначению.
вы хотели бы использовать очереди сообщений, когда есть вероятность, что другой процесс общения может не быть доступным, но вы все равно хотите, чтобы сообщение было отправлено во время выбора клиента. Доставка произойдет, когда процесс на другом конце просыпается и получает уведомление о прибытии сообщения.
Управление Транзакционными Очередями 101
транзакционная очередь-это промежуточная система, которая асинхронно маршрутизирует сообщения одного типа между хостами, которые могут быть подключены или не подключены в любой момент времени. Это означает, что он также должен быть способен сохранять сообщение где-то. Примерами таких систем являются MSMQ и IBM MQ
транзакционная очередь также может участвовать в распределенные сделки, и откат может вызвать удаление сообщений. Это означает, что сообщение гарантированно будет доставлено с в-самый-раз семантика или гарантированная доставка, если не откат. Сообщение не будет доставлено, если:
хост a публикует сообщение, но хост B не подключен
что-то (возможно, но не обязательно инициируется от хоста A) откат транзакции
B подключается после транзакции откат
в этом случае B никогда не будет знать, что сообщение даже существовало, если оно не было сообщено через какой-либо другой носитель. Если транзакция была откатана, это, вероятно, не имеет значения. Если B подключается и собирает сообщение до отката транзакции, откат также обратит действие сообщения на B.
обратите внимание, что A может отправить сообщение в очередь с гарантией поставки at-most-once. Если транзакция зафиксирована, хост A может предположить, что сообщение было поставленный надежным средством перехода. если транзакция откатывается, хост A может предположить, что любые эффекты сообщения были отменены.
Web-Сервисов
веб-сервиса удаленный вызов процедур или другой сервис (например RESTFul API) опубликовано (обычно) HTTP Сервер. Это синхронный протокол запроса / ответа и не имеет никакой гарантии доставки, встроенной в протокол. Клиент должен проверить правильность запуска службы. Как правило, это будет через ответ на запрос или ожидания вызова.
в последнем случае веб-службы не гарантируют семантику не более одного раза. Сервер может завершить службу и не доставить ответ (возможно, через что-то вне сервера, идущего не так). Этот приложение должно быть в состоянии справиться с этой ситуацией.
IIRC, RESTFul services должны быть идемпотентными (то же состояние достигается после любого количества вызовов той же службы),что является стратегией для борьбы с этим отсутствием гарантированного уведомления об успехе/сбое в архитектурах веб-служб. идея заключается в том, что концептуально записывается состояние, а не вызов службы, поэтому можно писать любое количество раз. Это означает, что недостаток отзывы об успехе могут быть допущены приложением, поскольку оно может повторно попробовать публикацию, пока не получит сообщение об успехе с сервера.
обратите внимание, что вы можете использовать Windows Communication Foundation (WCF) в качестве уровня абстракции выше MSMQ. Это дает вам ощущение работы с сервисом-только с односторонними операциями.
на самом деле нет никакой связи между MSMQ и WebService. Использование MSMQ для межпроцессной связи (можно также использовать сокеты, сообщения windows, сопоставленную память). это служба windows, которая отвечает за хранение сообщений до тех пор, пока кто-то dequeue их. вы можете сказать, что это более надежно, чем сокеты, поскольку сообщения хранятся на жестком диске, но это медленнее, чем другие методы IPC.
вы можете использовать MSMQ в dotnet с небольшими строками кода, просто объявите свой
несколько лучших ссылок из поиска Google для «MSMQ» должны помочь.
MSMQ-очередь сообщений Microsoft: * MSMQ-это реализация очереди сообщений, разработанная корпорацией Майкрософт. * Он развернут в своих операционных системах Windows Server. * Это протокол обмена сообщениями, который позволяет приложениям, работающим на отдельных серверах / процессах, общаться в отказоустойчивом режиме. * MSMQ обычно используется на предприятии для создания программного обеспечения. * MSMQ обеспечивает надежную доставку, помещая сообщения, которые не достигают места назначения в очередь, а затем повторно отправляя их как только пункт назначения будет доступен. * MSMQ также поддерживает транзакции. Он позволяет выполнять несколько операций в нескольких очередях, причем все операции завернуты в одну транзакцию, что гарантирует, что все или ни одна из операций не вступит в силу. * Технология очереди сообщений (MSMQ) позволяет приложениям, работающим в разное время, взаимодействовать между гетерогенными сетями и системами, которые могут временно отключаться. Следующие порты используются для очереди сообщений Microsoft оперативный: • Протокол TCP: 1801 • RPC: 135, 2101*, 2103*, 2105* * UDP: 3527, 1801
MSMQ означает очередь обмена сообщениями Microsoft.
Microsoft Message Queuing (MSMQ) – промежуточная среда обмена сообщениями
5.1. Служба обмена сообщениями MSMQ
При отправке сообщения с использованием MSMQ посылающему приложению необходимо указать имя компьютера и очереди, в которую его необходимо доставить. После вызова приложением функции отправки сообщение сохраняется в локальной исходящей очереди. Затем MSMQ определяет имя компьютера и очереди, куда необходимо передать сообщение. Возможны следующие случаи:
После определения имени компьютера с очередью назначения, MSMQ проверяет доступность компьютера (пакетом UDP ) и в случае ответа сразу пытается отправить ему сообщение, повторяя попытки с интервалом по умолчанию 5 секунд. Если сообщение не удается отправить, то обычно каждые 5 минут служба сообщений пытается найти новый пункт назначения сообщения, используя маршрутизацию MSMQ. Процесс пересылки сообщения между компьютерами повторяется, пока оно не достигнет очереди назначения. С момента поступления сообщения в указанную при отправке очередь любое использующее MSMQ приложение с необходимыми правами доступа может прочитать это сообщение (рис. 5.1).
Таким образом, MSMQ поддерживает асинхронную передачу сообщений, при которой участвующие в обмене компоненты распределенной системы не обязательно должны функционировать в один и тот же момент времени.
5.2. Инфраструктура, необходимая для использования MSMQ
В MSMQ существуют два вида очередей – общие ( public ) и частные ( private ). Как частные, так и общие очереди могут либо использовать, либо не использовать транзакции, что задается при создании очереди и не может быть изменено в дальнейшем.