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

Примечание: Неинициализированное смещение строки: *

Как видно из названия, возникает такой тип ошибки, когда вы, скорее всего, пытаетесь перебрать или найти значение из массива с не- существующий ключ.

Считаем, что вы пытаетесь показать каждую букву из $string

$string = 'ABCD'; 
for ($i=0, $len = strlen($string); $i <= $len; $i++){
    echo "$string[$i] \n"; 
}

. Вышеприведенный пример сгенерирует ( онлайн-демонстрацию ):

A
B
C
D
Notice: Uninitialized string offset: 4 in XXX on line X

И, как только скрипт заканчивается эхом D, вы получите ошибку, потому что внутри цикла for() вы сказали PHP, чтобы показать вам от первого до пятого символа строки из 'ABCD' Что, существует, но поскольку цикл начинает отсчитываться от 0 и эха D к моменту достижения значения 4, он выдает ошибку смещения.

Аналогичные ошибки:

54
задан Palec 6 December 2016 в 09:14
поделиться

7 ответов

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

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

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

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

https://msdn.microsoft.com/en-us/library/ms711472 (v=vs.85) информация .aspx

о WebServices:

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

41
ответ дан Antoops 7 November 2019 в 07:43
поделиться

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

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

48
ответ дан tvanfosson 7 November 2019 в 07:43
поделиться

Транзакционное управление Очереди 101

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

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

  • Хост сообщения сообщение, но Хост B не соединяется

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

  • подключения B после того, как транзакция откатывается

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

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

веб-сервисы

веб-сервис А вызов удаленной процедуры или другой сервис (например, УСПОКОИТЕЛЬНЫЙ API ) опубликован (обычно) Сервер HTTP. Это - синхронный протокол запроса/ответа и не имеет никакой гарантии доставки, встроенной в протокол. Это до клиента для проверки этого, сервис был правильно выполнен. Обычно это будет посредством ответа на запрос или тайм-аут вызова.

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

IIRC, УСПОКОИТЕЛЬНЫЕ сервисы должны быть идемпотентом (то же состояние достигается после любого количества вызовов того же сервиса), , который является стратегией контакта с этим отсутствием гарантируемого уведомления об успехе/отказе в архитектуре веб-сервиса. идея состоит в том, что концептуально каждый пишет состояние вместо того, чтобы вызвать сервис, таким образом, можно записать любое количество раз. Это означает, что отсутствие обратной связи об успехе может быть допущено приложением, поскольку это может повторить регистрацию, пока это не получает сообщение 'успеха' от сервера.

28
ответ дан ConcernedOfTunbridgeWells 7 November 2019 в 07:43
поделиться

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

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

- larsw

22
ответ дан larsw 7 November 2019 в 07:43
поделиться

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

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

8
ответ дан Ahmed Said 7 November 2019 в 07:43
поделиться

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

2
ответ дан user49550 7 November 2019 в 07:43
поделиться
1
ответ дан Greg Beech 7 November 2019 в 07:43
поделиться