<msmqIntegrationBinding>

Define um enlace que fornece suporte de colocação em fila ao encaminhar mensagens através do MSMQ.

<configuração>
  <system.serviceModel>
    <enlaces>
      <customBinding>
        <enlace>
          <msmqIntegrationBinding>

Sintaxe

<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 secções seguintes descrevem atributos, elementos subordinados e elementos principais

Atributos

Atributo Descrição
closeTimeout Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação próxima. Este valor deve ser maior ou igual a Zero. A predefinição é 00:01:00.
customDeadLetterQueue Um URI que contém a localização da fila de letras por aplicação não entregue, onde são colocadas mensagens que expiraram ou que falharam na transferência ou entrega.

A fila de letras não entregues é uma fila no gestor de filas da aplicação de envio para mensagens expiradas que não foram entregues.

O URI especificado pelo CustomDeadLetterQueue tem de utilizar o esquema net.msmq.
deadLetterQueue Um DeadLetterQueuevalor .que especifica o tipo de fila de letras não entregues a utilizar, se existir

Uma fila de letras não entregues é a localização onde as mensagens que não foram entregues na aplicação serão transferidas.

Para mensagens que requerem exatamenteOnce assurance (ou seja, o exactlyOnce atributo está definido como true), este atributo é predefinido para a fila de letras não entregues transacional em todo o sistema no MSMQ.

Para mensagens que não requerem garantias, este atributo é predefinido para null.
durável Um valor booleano que indica se a mensagem é durável ou volátil na fila. Uma mensagem durável sobrevive a uma falha do gestor de filas, enquanto uma mensagem volátil não. As mensagens voláteis são úteis quando as aplicações necessitam de menor latência e podem tolerar mensagens perdidas ocasionais. Se o exactlyOnce atributo estiver definido como true, as mensagens têm de ser duráveis. A predefinição é true.
exactlyOnce Um valor booleano que indica se cada mensagem é entregue apenas uma vez. Em seguida, o remetente será notificado das falhas de entrega. Quando durable é false, este atributo é ignorado e as mensagens são transferidas sem garantia de entrega. A predefinição é true. Para obter mais informações, consulte ExactlyOnce.
maxReceivedMessageSize Um número inteiro positivo que define o tamanho máximo da mensagem, em bytes, incluindo cabeçalhos, que é processado por este enlace. O remetente de uma mensagem que exceda este limite receberá uma falha SOAP. O recetor remove a mensagem e cria uma entrada do evento no registo de rastreio. A predefinição é 65536. Isto vinculado ao tamanho da mensagem destina-se a limitar a exposição a ataques Denial of Service (DoS).
maxRetryCycles Um número inteiro que indica o número de ciclos de repetição utilizados pela funcionalidade de deteção de mensagens venenosas. Uma mensagem torna-se uma mensagem de veneno quando falha em todas as tentativas de entrega de todos os ciclos. A predefinição é 2. Para obter mais informações, consulte MaxRetryCycles.
name Uma cadeia que contém o nome de configuração do enlace. Este valor deve ser exclusivo porque é utilizado como uma identificação para o enlace. A partir do .NET Framework 4, não são necessários enlaces e comportamentos para ter um nome. Para obter mais informações sobre a configuração predefinida e os enlaces e comportamentos sem nome, veja Configuração Simplificada e Configuração Simplificada para os Serviços WCF.
openTimeout Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação aberta. Este valor deve ser maior ou igual a Zero. A predefinição é 00:01:00.
receiveErrorHandling Um ReceiveErrorHandling valor que especifica a forma como as mensagens venenosas e não passíveis de correspondência são processadas.
receiveRetryCount Um número inteiro que especifica o número máximo de repetições imediatas que o gestor de filas deve tentar se a transmissão de uma mensagem da fila da aplicação para a aplicação falhar.

Se o número máximo de tentativas de entrega for atingido e a mensagem não for acedida pela aplicação, a mensagem será enviada para uma fila de repetição para resgatar mais tarde. A quantidade de tempo antes de a mensagem ser transferida de volta para a fila de envio é controlada por retryCycleDelay. Se os ciclos de repetição atingirem o maxRetryCycles valor, a mensagem será enviada para a fila de mensagens venenosas ou será enviada uma confirmação negativa para o remetente.
receiveTimeout Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação de receção. Este valor deve ser maior ou igual a Zero. A predefinição é 00:10:00.
receiveContextEnabled Um valor booleano que especifica se o contexto de receção para o processamento de mensagens em filas está ativado. Quando está definido como true, um serviço pode "pré-visualizar" uma mensagem na fila para começar a processá-la e, se algo correr mal e for emitida uma exceção, permanece na fila. Os serviços também podem "bloquear" mensagens para repetir o processamento mais tarde. ReceiveContext fornece um mecanismo para "concluir" a mensagem uma vez processada para que possa ser removida da fila. As mensagens já não estão a ser lidas e reescritas em filas através da rede e as mensagens individuais não estão a saltar em diferentes instâncias de serviço durante o processamento.
retryCycleDelay Um valor TimeSpan que especifica o atraso de tempo entre ciclos de repetição ao tentar entregar uma mensagem que não pôde ser entregue imediatamente. O valor define apenas o tempo mínimo de espera porque o tempo de espera real pode ser maior. O valor predefinido é 00:30:00. Para obter mais informações, consulte RetryCycleDelay.
sendTimeout Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação de envio. Este valor deve ser maior ou igual a Zero. A predefinição é 00:01:00.
serializationFormat Define o formato utilizado para serialização do corpo da mensagem. Este atributo é do tipo MsmqMessageSerializationFormat.
timeToLive Um valor TimeSpan que especifica quanto tempo as mensagens são válidas antes de expirarem e colocadas na fila de letras não entregues. A predefinição é 1.00:00:00.

Este atributo está definido para garantir que as mensagens sensíveis ao tempo não ficam obsoletas antes de serem processadas pelas aplicações que recebem. Uma mensagem numa fila que não é consumida pela aplicação de receção dentro do intervalo de tempo especificado diz-se que expirou. As mensagens expiradas são enviadas para uma fila especial denominada fila de letras não entregues. A localização da fila de letras inativas é definida com o DeadLetterQueue atributo ou com a predefinição adequada, com base em garantias.
useMsmqTracing Um valor booleano que especifica se as mensagens processadas por este enlace devem ser rastreadas. A predefinição é false. Quando o rastreio está ativado, as mensagens de relatório são criadas e enviadas para a fila do relatório sempre que a mensagem sai ou chega a um computador em fila de mensagens.
useSourceJournal Um valor booleano que especifica cópias de mensagens processadas por este enlace deve ser armazenado no diário de origem. A predefinição é false.

As aplicações em fila que pretendam manter um registo de mensagens que saíram da fila de envio do computador podem copiar as mensagens para uma fila de diários. Assim que uma mensagem sai da fila de envio e é recebida uma confirmação de que a mensagem foi recebida no computador de destino, é mantida uma cópia da mensagem na fila do diário do sistema do computador.

{serializationFormat} Atributo

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

Elementos Subordinados

Elemento Descrição
<segurança> Define as definições de segurança do enlace. Este elemento é do tipo MsmqIntegrationSecurityElement.

Elementos Principais

Elemento Descrição
<enlaces> Este elemento contém uma coleção de enlaces padrão e personalizados.

Observações

Este elemento de enlace pode ser utilizado para permitir que as aplicações do Windows Communication Foundation (WCF) enviem mensagens e recebam mensagens de aplicações MSMQ existentes que utilizam APIs nativas COM, MSMQ ou os tipos definidos no System.Messaging espaço de nomes Pode utilizar este elemento de configuração para especificar formas de abordar a fila, transferir garantias, se as mensagens têm de ser armazenadas de forma durável, e como as mensagens devem ser protegidas e autenticadas. Para obter mais informações, veja How to: Exchange Messages with WCF Endpoints and Message Queuing Applications (Como: Trocar Mensagens com Pontos Finais do WCF e Aplicações de Colocação em Fila 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>

Veja também