Что такое Microsoft Message Queuing (MSMQ)? Как это работает? - программирование
Подтвердить что ты не робот

Что такое Microsoft Message Queuing (MSMQ)? Как это работает?

Мне нужно работать с MSMQ (Microsoft Message Queuing). Для чего он работает, как это работает? Как это отличается от веб-служб?

4b9b3361

Ответ 1

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

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

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

Информация о MSMQ:

https://msdn.microsoft.com/en-us/library/ms711472(v=vs.85).aspx

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

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

Ответ 2

При всем уважении к ответу @Juan оба способа обмена данными между двумя отключенными процессами, то есть межпроцессорными каналами связи (IPC). Очереди сообщений асинхронны, а веб-службы синхронны. Они используют разные протоколы и вспомогательные службы для этого, поэтому они совершенно разные в реализации, но схожи по назначению.

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

Ответ 3

Управление транзакционными очередями 101

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

Транзакционная очередь также может участвовать в распределенной транзакции, и откат может инициировать удаление сообщений. Это означает, что сообщение гарантированно будет поставляться с максимально-раз семантикой или гарантированной доставкой, если не откат. Сообщение не будет доставлено, если:

  • Host A отправляет сообщение, но Host B не подключен

  • Что-то (возможно, но не обязательно инициируется из Host A) откат транзакции

  • B соединяется после транзакции   откат назад

В этом случае B никогда не будет знать, что сообщение даже существует, если оно не информировано ни с каким другим носителем. Если транзакция была отменена, это, вероятно, не имеет значения. Если B соединяет и собирает сообщение до откат транзакции, откат также отменяет эффекты сообщения на B.

Обратите внимание, что A может отправить сообщение в очередь с гарантией доставки по крайней мере один раз. Если транзакция выполнена, то Host A может предположить, что сообщение было доставлено надежным транспортным средством. Если транзакция отменена, Host A может предположим, что любые эффекты сообщения были отменены.

Веб-службы

Веб-сервис удаленный вызов процедуры или другой сервис (например RESTFul API), опубликованных (обычно) HTTP-сервером. Это синхронный протокол запроса/ответа и не имеет гарантии доставки, встроенного в протокол. Клиент должен проверить правильность выполнения службы. Обычно это будет через ответ на запрос или время ожидания вызова.

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

IIRC, службы RESTFul должны быть идемпотентными (одно и то же состояние достигается после любого количества вызовов одной и той же службы), , которая является стратегией для устранения этого недостатка гарантированного уведомления об успешности/сбое в архитектуре веб-сервисов. Идея состоит в том, что концептуально одно записывает состояние, а не вызывает службу, поэтому можно писать сколько угодно раз. Это означает, что приложение может игнорировать отсутствие обратной связи об успехе, так как оно может повторить попытку публикации, пока не получит сообщение "Успех" с сервера.

Ответ 4

Обратите внимание, что вы можете использовать Windows Communication Foundation (WCF) в качестве уровня абстракции над MSMQ. Это дает вам возможность работать с сервисом - только с односторонними операциями.

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

- larsw

Ответ 5

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

Вы можете использовать MSMQ в dotnet с небольшими строками кода, Just Объявите свой объект MessageQueue и вызовите методы Receive и Send. Само сообщение может быть нормальной строкой или двоичными данными.

Ответ 7

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

Ответ 8

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

Ответ 9

MSMQ означает очередь Microsoft Messaging Queue.

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