<msmqIntegrationBinding>

Определяет привязку, предоставляющую поддержку очередей путем маршрутизации сообщений с помощью MSMQ.

<настройка>
  <system.serviceModel>
    <Привязки>
      <Custombinding>
        <Привязки>
          <msmqIntegrationBinding>

Синтаксис

<msmqIntegrationBinding>
  <binding closeTimeout="TimeSpan"
           customDeadLetterQueue="Uri"
           deadLetterQueue="Uri"
           durable="Boolean"
           exactlyOnce="Boolean"
           maxReceivedMessageSize="Integer"
           maxRetryCycles="Integer"
           name="String"
           openTimeout="TimeSpan"
           receiveContextEnabled="Boolean"
           receiveErrorHandling="Drop/Fault/Move/Reject"
           receiveTimeout="TimeSpan"
           receiveRetryCount="Integer"
           retryCycleDelay="TimeSpan"
           sendTimeout="TimeSpan"
           serializationFormat="XML/Binary/ActiveX/ByteArray/Stream"
           timeToLive="TimeSpan"
           useMsmqTracing="Boolean"
           useSourceJournal="Boolean">
  </binding>
</msmqIntegrationBinding>

Атрибуты и элементы

В следующих разделах описываются атрибуты, дочерние и родительские элементы.

Атрибуты

Атрибут Описание
closeTimeout Значение TimeSpan, которое задает длительность времени ожидания для завершения операции закрытия. Это значение должно быть больше или равно Zero. Значение по умолчанию - 00:01:00.
customDeadLetterQueue Универсальный код ресурса (URI), который указывает местоположение очереди недоставленных сообщений для каждого приложения, куда помещаются сообщения с истекшим сроком или сообщения, которые не удалось передать или доставить.

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

Универсальный код ресурса (URI), определяемый свойством CustomDeadLetterQueue, должен использовать схему net.msmq.
deadLetterQueue Значение DeadLetterQueue, определяющее, какую очередь недоставленных сообщений следует использовать, если таковые имеются.

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

Для сообщений, которым требуется гарантия exactlyOnce (то есть атрибут exactlyOnce имеет значение true), этот атрибут по умолчанию указывает на транзакционную очередь недоставленных сообщений MSMQ для всей системы.

Для сообщений, которые не требуют гарантии, по умолчанию этот атрибут имеет значение null.
durable Логическое значение, указывающее, является ли сообщение в очереди постоянным или переменным. Постоянное сообщение сохраняется после сбоя диспетчера очередей, а переменное сообщение — нет. Переменные сообщения используются, если для приложений требуются небольшие задержки, и приложения допускают периодические потери сообщений. Если атрибут exactlyOnce имеет значение true, сообщения должны быть постоянными. Значение по умолчанию — true.
exactlyOnce Логическое значение, указывающее, доставляется ли каждое сообщение только один раз. Затем отправитель оповещается об ошибках доставки. Если durable имеет значение false, этот атрибут не учитывается и сообщения пересылаются без гарантии доставки. Значение по умолчанию — true. Для получения дополнительной информации см. ExactlyOnce.
maxReceivedMessageSize Положительное целое число, определяющее максимальный размер сообщения (в байтах), включая заголовки, которое обрабатывается этой привязкой. Отправитель сообщения, превышающего это ограничение, получит ошибку SOAP. Получатель отклоняет сообщение и создает запись о событии в журнале трассировки. Значение по умолчанию — 65536. Это ограничение размера сообщения предназначено для уменьшения уязвимости к атакам типа «отказ в обслуживании» (DoS).
maxRetryCycles Целое число, указывающее количество циклов повтора, используемых возможностью обнаружения подозрительных сообщений. Сообщение становится подозрительным, если попытки доставки во всех циклах закончились неудачей. Значение по умолчанию — 2 Для получения дополнительной информации см. MaxRetryCycles.
name Строка, содержащая имя конфигурации привязки. Это значение должно быть уникальным, поскольку оно используется в качестве идентификатора привязки. Начиная с платформа .NET Framework 4, привязкам и поведению не требуется иметь имя. Дополнительные сведения о конфигурации по умолчанию и безымяных привязках и поведении см. в разделах Упрощенная конфигурация и Упрощенная конфигурация для служб WCF.
openTimeout Значение TimeSpan, которое задает длительность времени ожидания для завершения операции открытия. Это значение должно быть больше или равно Zero. Значение по умолчанию - 00:01:00.
receiveErrorHandling Значение ReceiveErrorHandling, указывающее, каким образом будут обрабатываться подозрительные сообщения и сообщения, которые не удалось доставить.
receiveRetryCount Целое число, задающее максимальное число немедленных повторных попыток, которые должен выполнить диспетчер очереди, если не удается выполнить передачу сообщения из очереди приложения в приложение.

Если выполнено максимальное количество попыток доставки, а приложение не имеет доступа к сообщению, сообщение помещается в очередь повторного выполнения для повторной доставки через некоторое время. Время до повторного помещения сообщения в очередь отправки указывается в свойстве retryCycleDelay. Если число повторных попыток достигает значения maxRetryCycles, то сообщение отправляется в очередь подозрительных сообщений или отправителю отсылается уведомление о том, что сообщение не может быть доставлено.
receiveTimeout Значение TimeSpan, которое задает длительность времени ожидания для завершения операции получения. Это значение должно быть больше или равно Zero. Значение по умолчанию - 00:10:00.
receiveContextEnabled Логическое значение, указывающее, включен ли контекст получения для обработки сообщений в очередях. Если задано значение true, служба может "просмотреть" сообщение в очереди, чтобы начать его обработку, и, если что-то пойдет не так и создается исключение, оно остается в очереди. Службы также могут "блокировать" сообщения, чтобы повторить обработку позже. ReceiveContext предоставляет механизм для "завершения" сообщения после обработки, чтобы его можно было удалить из очереди. Сообщения больше не считываются и перезаписываются в очереди по сети, а отдельные сообщения не отображаются в разных экземплярах службы во время обработки.
retryCycleDelay Значение TimeSpan, которое задает временную задержку между циклами повторов при попытке доставить сообщение, которое не удалось доставить сразу. Значение определяет только минимальное время ожидания, поскольку фактическое время ожидания может быть больше. Значение по умолчанию - 00:30:00. Для получения дополнительной информации см. RetryCycleDelay.
sendTimeout Значение TimeSpan, которое задает длительность времени ожидания для завершения операции отправки. Это значение должно быть больше или равно Zero. Значение по умолчанию - 00:01:00.
serializationFormat Определяет формат, используемый для сериализации текста сообщения. Это атрибут типа MsmqMessageSerializationFormat.
timeToLive Значение TimeSpan, указывающее, как долго сообщения остаются действительными до истечения их срока, после чего они переводятся в очередь недоставленных сообщений. Значение по умолчанию - 1.00:00:00.

Этот атрибут устанавливается для предотвращения устаревания срочных сообщений до их обработки получающими приложениями. Сообщение в очереди, которое не поступает в принимающее приложение в пределах заданного интервала времени, считается устаревшим. Устаревшие сообщения отправляются в специальную очередь, называемую очередью недоставленных сообщений. Расположение очереди недоставленных сообщений задается атрибутом DeadLetterQueue, или оно устанавливается на основании гарантий в соответствующее значение по умолчанию.
useMsmqTracing Логическое значение, указывающее, должна ли выполняться трассировка сообщений, обрабатываемых этой привязкой. Значение по умолчанию — false. Если трассировка включена, каждый раз, когда сообщение отправляется с компьютера службы очередей или поступает на этот компьютер, создаются сообщения-отчеты, которые затем отправляются в очередь отчетов.
useSourceJournal Логическое значение, которое указывает, должны ли копии сообщений, обрабатываемых этой привязкой, храниться в журнале источников. Значение по умолчанию — false.

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

Атрибут {serializationFormat}

Значение Описание
Xml Формат XML
Двоичные данные Двоичный формат
ActiveX Формат ActiveX
ByteArray Сериализует объект в массив байтов.
Stream Текст в формате потока

Дочерние элементы

Элемент Описание
<Безопасности> Определяет параметры безопасности привязки. Это элемент типа MsmqIntegrationSecurityElement.

Родительские элементы

Элемент Описание
<Привязки> Этот элемент содержит коллекцию стандартных и пользовательских привязок.

Комментарии

Этот элемент привязки можно использовать, чтобы разрешить приложениям Windows Communication Foundation (WCF) отправлять сообщения в существующие приложения MSMQ, использующие собственные API COM, MSMQ или типы, определенные в System.Messaging пространстве имен. Этот элемент конфигурации позволяет указать способы обработки очереди, гарантии передачи, необходимость хранения сообщений. и способы защиты и проверки подлинности сообщений. Дополнительные сведения см. в статье Практическое руководство. Обмен сообщениями с конечными точками WCF и приложениями очереди сообщений.

Пример

<configuration>
  <system.ServiceModel>
    <bindings>
      <msmqIntegrationBinding>
        <binding closeTimeout="00:00:10"
                 openTimeout="00:00:20"
                 receiveTimeout="00:00:30"
                 sendTimeout="00:00:40"
                 deadLetterQueue="net.msmq://localhost/blah"
                 durable="true"
                 exactlyOnce="true"
                 maxReceivedMessageSize="1000"
                 maxImmediateRetries="11"
                 maxRetryCycles="12"
                 poisonMessageHandling="Disabled"
                 rejectAfterLastRetry="false"
                 retryCycleDelay="00:05:55"
                 timeToLive="00:11:11"
                 useSourceJournal="true"
                 useMsmqTracing="true"
                 serializationFormat="Binary">
          <security mode="None" />
        </binding>
      </msmqIntegrationBinding>
    </bindings>
  </system.ServiceModel>
</configuration>

См. также раздел