<Netmsmqbinding>

Definiuje powiązanie w kolejce odpowiednie do komunikacji między maszynami.

<Konfiguracji>
  <System.servicemodel>
    <Powiązania>
      <Netmsmqbinding>

Składnia

<netMsmqBinding>
  <binding closeTimeout="TimeSpan"
           customDeadLetterQueue="Uri"
           deadLetterQueue="Uri"
           durable="Boolean"
           exactlyOnce="Boolean"
           maxBufferPoolSize="Integer"
           maxReceivedMessageSize="Integer"
           maxRetryCycles="Integer"
           name="String"
           openTimeout="TimeSpan"
           poisonMessageHandling="Disabled/EnabledIfSupported"
           queueTransferProtocol="Native/Srmp/SrmpSecure"
           receiveErrorHandling="Drop/Fault/Move/Reject"
           receiveTimeout="TimeSpan"
           receiveRetryCount="Integer"
           rejectAfterLastRetry="Boolean"
           retryCycleDelay="TimeSpan"
           sendTimeout="TimeSpan"
           timeToLive="TimeSpan"
           useActiveDirectory="Boolean"
           useMsmqTracing="Boolean"
           useSourceJournal="Boolean">
    <security>
      <message algorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15"
               clientCredentialType="None/Windows/UserName/Certificate/InfoCard" />
      <transport msmqAuthenticationMode="None/WindowsDomain/Certificate"
                 msmqEncryptionAlgorithm="RC4Stream/AES"
                 msmqProtectionLevel="None/Sign/EncryptAndSign"
                 msmqSecureHashAlgorithm="MD5/SHA1/SHA256/SHA512" />
    </security>
    <readerQuotas maxArrayLength="Integer"
                  maxBytesPerRead="Integer"
                  maxDepth="Integer"
                  maxNameTableCharCount="Integer"
                  maxStringContentLength="Integer" />
  </binding>
</netMsmqBinding>

Atrybuty i elementy

W poniższych sekcjach opisano atrybuty, elementy podrzędne i elementy nadrzędne.

Atrybuty

Atrybut Opis
closeTimeout TimeSpan Wartość określająca interwał czasu określony dla zakończenia operacji zamknięcia. Ta wartość powinna być większa lub równa Zero. Wartość domyślna to 00:01:00.
customDeadLetterQueue Identyfikator URI, który zawiera lokalizację kolejki utraconych komunikatów dla aplikacji, w której są umieszczane komunikaty, które wygasły lub które zakończyły się niepowodzeniem transferu lub dostarczania.

Kolejka utraconych wiadomości to kolejka w menedżerze kolejek aplikacji wysyłającej dla wygasłych komunikatów, które nie zostały dostarczone.

Identyfikator URI określony przez CustomDeadLetterQueue program musi używać schematu net.msmq.
deadLetterQueue Wartość DeadLetterQueue określająca, który typ kolejki utraconych liter ma być używany, jeśli istnieje.

Kolejka utraconych wiadomości to miejsce, w którym komunikaty, które nie zostały dostarczone do aplikacji, zostaną przeniesione.

W przypadku komunikatów, które wymagają exactlyOnce zapewnienia (czyli exactlyOnce atrybut jest ustawiony na true), ten atrybut jest domyślny dla kolejki transakcyjnej transakcyjnej całej systemu w msMQ.

W przypadku komunikatów, które nie wymagają żadnych gwarancji, ten atrybut jest domyślnie wartością null.
durable Wartość logiczna wskazująca, czy komunikat jest trwały, czy nietrwały w kolejce. Trwały komunikat przetrwa awarię menedżera kolejek, podczas gdy komunikat nie jest niestabilny. Komunikaty nietrwałe są przydatne, gdy aplikacje wymagają mniejszego opóźnienia i mogą tolerować sporadyczne utracone komunikaty. exactlyOnce Jeśli atrybut jest ustawiony na true, komunikaty muszą być trwałe. Wartość domyślna to true.
exactlyOnce Wartość logiczna wskazująca, czy każdy komunikat przetworzony przez to powiązanie jest dostarczany tylko raz. Nadawca otrzyma powiadomienie o niepowodzeniach dostarczania. Gdy durable jest to false, ten atrybut jest ignorowany, a komunikaty są przenoszone bez zapewnienia dostarczania. Wartość domyślna to true. Aby uzyskać więcej informacji, zobacz ExactlyOnce.
maxBufferPoolSize Liczba całkowita określająca maksymalny rozmiar puli buforów dla tego powiązania. Wartość domyślna to 8.
maxReceivedMessageSize Dodatnia liczba całkowita definiująca maksymalny rozmiar komunikatu w bajtach, w tym nagłówki, które są przetwarzane przez to powiązanie. Nadawca komunikatu przekraczającego ten limit otrzyma błąd PROTOKOŁU SOAP. Odbiorca pominie komunikat i tworzy wpis zdarzenia w dzienniku śledzenia. Wartość domyślna to 65536. To ograniczenie rozmiaru komunikatu ma na celu ograniczenie narażenia na ataki typu "odmowa usługi" (DoS).
maxRetryCycles Liczba całkowita wskazująca liczbę cykli ponawiania prób używanych przez funkcję wykrywania komunikatów o truciznie. Komunikat staje się zatrutą wiadomością, gdy kończy się niepowodzeniem, wszystkie próby dostarczenia wszystkich cykli. Wartość domyślna to 3. Aby uzyskać więcej informacji, zobacz MaxRetryCycles.
name Atrybut wymagany. Ciąg zawierający nazwę konfiguracji powiązania. Ta wartość powinna być unikatowa, ponieważ jest używana jako identyfikacja powiązania. Począwszy od .NET Framework 4, powiązania i zachowania nie muszą mieć nazwy. Aby uzyskać więcej informacji na temat domyślnej konfiguracji i bez nazw powiązań i zachowań, zobacz Uproszczone konfigurowanie i uproszczona konfiguracjadla usług WCF.
openTimeout TimeSpan Wartość określająca interwał czasu określony dla operacji otwierania do ukończenia. Ta wartość powinna być większa lub równa Zero. Wartość domyślna to 00:01:00.
QueueTransferProtocol Prawidłowa QueueTransferProtocol wartość określająca transport kanału komunikacji w kolejce używanego przez to powiązanie. Usługa MSMQ nie obsługuje adresowania usługi Active Directory podczas korzystania z protokołu SOAP Reliable Messaging Protocol. W związku z tym nie należy ustawiać tego atrybutu useActiveDirectory na Srmp lub Srmps gdy atrybut jest ustawiony na true.
receiveErrorHandling ReceiveErrorHandling Wartość określająca sposób obsługi zatrutych i niedysponowalnych komunikatów.
receiveRetryCount Liczba całkowita określająca maksymalną liczbę prób wysłania komunikatu przez menedżera kolejek przed przeniesieniem jej do kolejki ponawiania prób.
receiveTimeout TimeSpan Wartość określająca interwał czasu określony dla wykonania operacji odbierania. Ta wartość powinna być większa lub równa Zero. Wartość domyślna to 00:10:00.
retryCycleDelay Wartość przedziału czasowego określająca opóźnienie między cyklami ponawiania próby podczas próby dostarczenia komunikatu, którego nie można dostarczyć natychmiast. Wartość definiuje tylko minimalny czas oczekiwania, ponieważ rzeczywisty czas oczekiwania może być dłuższy. Wartość domyślna to 00:10:00. Aby uzyskać więcej informacji, zobacz RetryCycleDelay.
sendTimeout TimeSpan Wartość określająca interwał czasu określony dla operacji wysyłania do ukończenia. Ta wartość powinna być większa lub równa Zero. Wartość domyślna to 00:01:00.
timeToLive Wartość przedziału czasowego określająca, jak długo komunikaty są prawidłowe przed ich wygaśnięciem i umieszczone w kolejce utraconych wiadomości. Wartość domyślna to 1.00:00:00.

Ten atrybut jest ustawiony, aby upewnić się, że komunikaty wrażliwe na czas nie stają się nieaktualne, zanim zostaną przetworzone przez odbierające aplikacje. Komunikat w kolejce, który nie jest używany przez aplikację odbieraną w określonym przedziale czasu, mówi się, że wygasł. Wygasłe komunikaty są wysyłane do specjalnej kolejki o nazwie kolejka utraconych wiadomości. Lokalizacja kolejki utraconych wiadomości jest ustawiana za pomocą atrybutu DeadLetterQueue lub odpowiedniego domyślnego ustawienia na podstawie gwarancji.
usingActiveDirectory Wartość logiczna określająca, czy adresy kolejek powinny być konwertowane przy użyciu usługi Active Directory.

Adresy kolejek MSMQ mogą składać się z nazw ścieżek lub nazw formatów bezpośrednich. W przypadku nazwy formatu bezpośredniego program MSMQ rozpoznaje nazwę komputera przy użyciu nazw DNS, NetBIOS lub IP. Przy użyciu nazwy ścieżki program MSMQ rozpoznaje nazwę komputera przy użyciu usługi Active Directory.

Domyślnie transport w kolejce programu Windows Communication Foundation (WCF) konwertuje identyfikator URI kolejki komunikatów na nazwę formatu bezpośredniego. Ustawiając UseActiveDirectory właściwość na true, aplikacja może określić, że transport w kolejce powinien rozpoznać nazwę komputera przy użyciu usługi Active Directory, a nie DNS, NetBIOS lub IP.
useMsmqTracing Wartość logiczna określająca, czy komunikaty przetwarzane przez to powiązanie powinny być śledzone. Wartość domyślna to false. Po włączeniu śledzenia komunikaty raportów są tworzone i wysyłane do kolejki raportów za każdym razem, gdy komunikat opuszcza lub dociera do komputera kolejkowania komunikatów.
useSourceJournal Wartość logiczna określająca kopie komunikatów przetwarzanych przez to powiązanie powinno być przechowywane w dzienniku źródłowym. Wartość domyślna to false.

Aplikacje w kolejce, które chcą zachować zapis komunikatów, które opuściły kolejkę wychodzącą komputera, mogą skopiować komunikaty do kolejki dziennika. Gdy komunikat opuści kolejkę wychodzącą i zostanie odebrane potwierdzenie odebrania komunikatu na komputerze docelowym, kopia komunikatu jest przechowywana w kolejce dziennika systemowego komputera wysyłającego.

Elementy podrzędne

Element Opis
<Readerquotas> Definiuje ograniczenia dotyczące złożoności komunikatów PROTOKOŁU SOAP, które mogą być przetwarzane przez punkty końcowe skonfigurowane za pomocą tego powiązania. Ten element jest typu XmlDictionaryReaderQuotasElement.
<Zabezpieczeń> Definiuje ustawienia zabezpieczeń powiązania. Ten element jest typu NetMsmqSecurityElement.

Elementy nadrzędne

Element Opis
<Powiązania> Ten element zawiera kolekcję powiązań standardowych i niestandardowych.

Uwagi

Powiązanie netMsmqBinding zapewnia obsługę kolejkowania przez wykorzystanie usługi Microsoft Message Queuing (MSMQ) jako transportu i umożliwia obsługę luźno powiązanych aplikacji, izolacji awarii, bilansowania obciążenia i rozłączonych operacji. Aby zapoznać się z omówieniem tych funkcji, zobacz Kolejki w programie WCF.

Przykład

<configuration>
  <system.ServiceModel>
    <bindings>
      <netMsmqBinding>
        <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"
                 maxRetries="11"
                 maxRetryCycles="12"
                 poisonMessageHandling="Disabled"
                 rejectAfterLastRetry="false"
                 retryCycleDelay="00:05:55"
                 timeToLive="00:11:11"
                 sourceJournal="true"
                 useMsmqTracing="true"
                 useActiveDirectory="true">
          <security>
            <message clientCredentialType="Windows" />
          </security>
        </binding>
      </netMsmqBinding>
    </bindings>
  </system.ServiceModel>
</configuration>

Zobacz także