Что такое очередь сообщений Microsoft (MSMQ)? Как это работает?

Мне нужно работать с MSMQ (очередь сообщений Microsoft). Что это, для чего это, как это работает? Чем он отличается от веб-сервисов?

9 ответов


Как указано в его имени, это просто администратор очередей.

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

Это не имеет ничего общего с веб-сервисов, это две разные вещи

информация о Служба msmq:

https://msdn.microsoft.com/en-us/library/ms711472 (v=против 85).aspx

информация о веб-сервисах:

http://msdn.microsoft.com/en-us/library/ms972326.aspx


при всем уважении к ответу @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. Это дает вам ощущение работы с сервисом-только с односторонними операциями.

для получения дополнительной информации см.: http://msdn.microsoft.com/en-us/library/ms789048.aspx

--larsw


на самом деле нет никакой связи между MSMQ и WebService. Использование MSMQ для межпроцессной связи (можно также использовать сокеты, сообщения windows, сопоставленную память). это служба windows, которая отвечает за хранение сообщений до тех пор, пока кто-то dequeue их. вы можете сказать, что это более надежно, чем сокеты, поскольку сообщения хранятся на жестком диске, но это медленнее, чем другие методы IPC.

вы можете использовать MSMQ в dotnet с небольшими строками кода, просто объявите свой



как все объяснили, MSMQ используется в качестве очереди для сообщений. Сообщения могут быть оболочкой для фактических данных, объекта и всего, что вы можете сериализовать и отправить по проводу. MSMQ имеет свои собственные ограничения. MSMQ 1.0 и MSMQ 2.0 имели ограничение сообщения 4 МБ. Это ограничение было снято с MSMQ 3.0. Message oriented Middleware (MOM) - это концепция, которая сильно зависит от обмена сообщениями. Enterprise Service Bus foundation построен на обмене сообщениями. Все эти новые технологии, зависят от обмена сообщениями для асинхронной передачи данных с надежностью.


MSMQ-очередь сообщений Microsoft: * MSMQ-это реализация очереди сообщений, разработанная корпорацией Майкрософт. * Он развернут в своих операционных системах Windows Server. * Это протокол обмена сообщениями, который позволяет приложениям, работающим на отдельных серверах / процессах, общаться в отказоустойчивом режиме. * MSMQ обычно используется на предприятии для создания программного обеспечения. * MSMQ обеспечивает надежную доставку, помещая сообщения, которые не достигают места назначения в очередь, а затем повторно отправляя их как только пункт назначения будет доступен. * MSMQ также поддерживает транзакции. Он позволяет выполнять несколько операций в нескольких очередях, причем все операции завернуты в одну транзакцию, что гарантирует, что все или ни одна из операций не вступит в силу. * Технология очереди сообщений (MSMQ) позволяет приложениям, работающим в разное время, взаимодействовать между гетерогенными сетями и системами, которые могут временно отключаться. Следующие порты используются для очереди сообщений Microsoft оперативный: • Протокол TCP: 1801 • RPC: 135, 2101*, 2103*, 2105* * UDP: 3527, 1801


MSMQ означает очередь обмена сообщениями Microsoft.

это просто очередь, которая хранит сообщение в формированном виде, чтобы оно могло перейти в БД (может на той же машине или на сервере). Там есть разные типы очереди, которые классифицируют сообщение между собой. Если есть какая-то проблема/ошибка внутри сообщения или передается недопустимое сообщение, автоматически переходит в мертвую очередь, что означает, что это не процесс дальше. Но перед передачей сообщения в мертвую очередь он повторит попытку max подсчитайте, и пока это не процесс, он может отправить его в мертвую очередь. Он обычно используется для отправки сообщения журнала с клиентской машины на сервер или БД, так что если есть какие-либо проблемы происходит на клиентской машине, то разработчик или Служба поддержки может пройти через журнал, чтобы решить проблему. MSMQ-это служба, предоставляемая Microsoft для получения записи файла журнала и легко получить решение с помощью файла журнала. Вы получите лучшую идею из этого блога http://msdn.microsoft.com/en-us/library/ms711472 (v=против 85).aspx