Compartilhar via


<msmqIntegrationBinding>

Define uma associação que fornece suporte ao enfileiramento, encaminhando as mensagens por meio do MSMQ.

<configuration>
  <system.serviceModel>
    <bindings>
      <customBinding>
        <binding>
          <msmqIntegrationBinding>

Syntax

<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>

Atributos e elementos

As seções a seguir descrevem os atributos, os elementos filho e os elementos pai

Atributos

Atributo Descrição
closeTimeout Um valor TimeSpan que especifica o intervalo de tempo para a conclusão de uma operação de fechamento. Esse valor deve ser igual ou superior a Zero. O padrão é 00:01:00.
customDeadLetterQueue Um URI que contém o local da fila de mensagens mortas por aplicativo, em que são colocadas as mensagens que expiraram ou tiveram uma falha de transferência ou de entrega.

A fila de mensagens mortas é uma fila no gerenciador de filas do aplicativo de envio para mensagens expiradas que não foram entregues.

O URI especificado por CustomDeadLetterQueue deve usar o esquema net.msmq.
deadLetterQueue Um DeadLetterQueue.value que especifica qual tipo de fila de mensagens mortas deve ser usado, se houver

Uma fila de mensagens mortas é o local para o qual as mensagens que não foram entregues ao aplicativo serão transferidas.

Para as mensagens que exigem a garantia exactlyOnce (ou seja, o atributo exactlyOnce está definido como true), esse atributo é o padrão para a fila de mensagens mortas da transação em todo o sistema no MSMQ.

Para as mensagens que não exigem garantias, esse atributo usa null como padrão.
durável Um valor booliano que indica se a mensagem é durável ou volátil na fila. Uma mensagem durável sobrevive a uma falha do gerenciador de filas, ao contrário de uma mensagem volátil. As mensagens voláteis são úteis quando os aplicativos exigem latência mais baixa e podem tolerar mensagens perdidas ocasionais. Se o atributo exactlyOnce for definido como true, as mensagens devem ser duráveis. O padrão é true.
exactlyOnce Um valor booliano que indica se cada mensagem é entregue apenas uma vez. O remetente será notificado sobre falhas de entrega. Quando durable é false, esse atributo é ignorado e as mensagens são transferidas sem garantia de entrega. O padrão é true. Para obter mais informações, consulte ExactlyOnce.
maxReceivedMessageSize Um inteiro positivo que define o tamanho máximo da mensagem, em bytes, incluindo os cabeçalhos, que é processado por essa associação. O remetente de uma mensagem que exceder esse limite receberá uma falha SOAP. O receptor remove a mensagem e cria uma entrada do evento no log de rastreamento. O padrão é 65536. O limite no tamanho da mensagem serve para restringir a exposição para ataques de DoS (Negação de Serviço).
maxRetryCycles Um inteiro que indica o número de ciclos de repetição usados pelo recurso de detecção de mensagens suspeitas. Uma mensagem se torna suspeita quando falha em todas as tentativas de entrega de todos os ciclos. O padrão é 2. Para obter mais informações, consulte MaxRetryCycles.
name Uma cadeia de caracteres que contém o nome de configuração da associação. Esse valor deve ser exclusivo, pois é usado como uma identificação para a associação. A partir do .NET Framework 4, associações e comportamentos não precisam ter um nome. Para obter mais informações sobre a configuração padrão e as associações sem nome, incluindo os comportamentos, confira Configuração Simplificada e Configuração Simplificada para Serviços WCF.
openTimeout Um valor TimeSpan que especifica o intervalo de tempo fornecido para a conclusão de uma operação de abertura. Esse valor deve ser igual ou superior a Zero. O padrão é 00:01:00.
receiveErrorHandling Um valor ReceiveErrorHandling que especifica como mensagens suspeitas e que não podem ser expedidas são tratadas.
receiveRetryCount Um inteiro que especifica o número máximo de repetições imediatas que o gerenciador de fila deve tentar realizar, em caso de falha na transmissão de uma mensagem da fila de aplicativos para o aplicativo.

Se o número máximo de tentativas de entrega for atingido e a mensagem não for acessada pelo aplicativo, a mensagem será enviada para uma fila de repetição, para realizar a nova entrega posteriormente. O tempo decorrido até que a mensagem seja transferida novamente para a fila de envio é controlado por retryCycleDelay. Se os ciclos de repetição atingirem o valor maxRetryCycles, as mensagens serão enviadas para a fila de mensagens suspeitas ou uma confirmação negativa será enviada novamente ao remetente.
receiveTimeout Um valor TimeSpan que especifica o intervalo de tempo para a conclusão de uma operação de recebimento. Esse valor deve ser igual ou superior a Zero. O padrão é 00:10:00.
receiveContextEnabled Um valor booliano que especifica se o recebimento de contexto para processamento de mensagens nas filas está habilitado. Quando esse recurso está definido como true, um serviço pode "espiar" uma mensagem na fila para começar o processamento e, se algo der errado e uma exceção for gerada, ela permanecerá na fila. Os serviços também podem "bloquear" as mensagens para repetir o processamento posteriormente. ReceiveContext fornece um mecanismo para "concluir" a mensagem, uma vez processada, para que possa ser removida da fila. As mensagens não estão mais sendo lidas e regravadas nas filas pela rede, e as mensagens individuais não estão sendo devolvidas em diferentes instâncias de serviço durante o processamento.
retryCycleDelay Um valor TimeSpan que especifica o atraso de tempo entre os ciclos de repetição na tentativa de entrega de uma mensagem que não pôde ser entregue imediatamente. O valor define apenas o tempo mínimo de espera, pois o tempo de espera real pode ser maior. O valor padrão é 00:30:00. Para obter mais informações, consulte RetryCycleDelay.
sendTimeout Um valor TimeSpan que especifica o intervalo de tempo para a conclusão de uma operação de envio. Esse valor deve ser igual ou superior a Zero. O padrão é 00:01:00.
serializationFormat Define o formato usado para serialização do corpo da mensagem. Esse atributo é do tipo MsmqMessageSerializationFormat.
timeToLive Um valor TimeSpan que especifica por quanto tempo as mensagens são válidas antes de expirarem e serem colocadas na fila de mensagens mortas. O padrão é 1.00:00:00.

Esse atributo está definido para garantir que as mensagens sensíveis ao tempo não fiquem obsoletas antes de serem processadas pelos aplicativos de recebimento. Uma mensagem em uma fila que não é consumida pelo aplicativo de recebimento dentro do intervalo de tempo especificado é considerada vencida. As mensagens vencidas são enviadas para uma fila especial chamada fila de mensagens mortas. O local da fila de mensagens mortas é definido com o atributo DeadLetterQueue ou com o padrão apropriado, de acordo com as garantias.
useMsmqTracing Um valor booliano que especifica se as mensagens processadas por essa associação devem ser rastreadas. O padrão é false. Quando o rastreamento está habilitado, as mensagens de relatório são criadas e enviadas para a fila de relatórios sempre que a mensagem sai ou chega em um computador do Enfileiramento de Mensagens.
useSourceJournal Um valor booliano que especifica se as cópias de mensagens processadas por essa associação devem ser armazenadas no diário de origem. O padrão é false.

Os aplicativos na fila que desejam manter um registro das mensagens que saíram da fila de saída do computador podem copiar as mensagens para uma fila de diários. Depois que uma mensagem sai da fila de saída e uma confirmação é recebida de que a mensagem foi recebida no computador de destino, uma cópia da mensagem é mantida na fila de diários do sistema de envio.

Atributo {serializationFormat}

Valor Descrição
Xml Formato XML
Binário Formato binário
ActiveX Formato ActiveX
ByteArray Serializa o objeto em uma matriz de bytes.
STREAM O corpo formatado como fluxo

Elementos filho

Elemento Descrição
<security> Define as configurações de segurança da associação. Esse elemento é do tipo MsmqIntegrationSecurityElement.

Elementos pai

Elemento Descrição
<bindings> Esse elemento contém uma coleção de associações padrão e personalizadas.

Comentários

Esse elemento de associação pode ser usado para habilitar os aplicativos do WCF (Windows Communication Foundation), para enviar e receber mensagens nos aplicativos existentes do MSMQ que usam COM, APIs nativas do MSMQ ou os tipos definidos no namespace System.Messaging. Você pode usar esse elemento de configuração para especificar maneiras de tratar a fila, transferir garantias, determinar se as mensagens devem ser armazenadas de forma durável, e como as mensagens devem ser protegidas e autenticadas. Para obter mais informações, confira Instruções: trocar mensagens com os Pontos de Extremidade do WCF e os Aplicativos de Enfileiramento de Mensagens.

Exemplo

<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>

Confira também