<msmqIntegrationBinding>

Definiuje powiązanie, które zapewnia obsługę kolejkowania przez kierowanie komunikatów za pośrednictwem usługi MSMQ.

<konfiguracja>
  <System.servicemodel>
    <Powiązania>
      <Custombinding>
        <Wiązania>
          <msmqIntegrationBinding>

Składnia

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

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 podany dla operacji zamknięcia do ukończenia. 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 nie powiodły się transfer lub dostarczanie.

Kolejka utraconych komunikatów 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ść DeadLetterQueueokreślająca typ kolejki utraconych komunikatów do użycia, jeśli istnieje

Kolejka utraconych komunikatów to lokalizacja, w ramach którego komunikaty, których nie udało się dostarczyć do aplikacji, zostaną przeniesione.

W przypadku komunikatów wymagających dokładnie gwarancjiOnce (tj exactlyOnce . atrybut jest ustawiony na truewartość ), ten atrybut jest domyślnie ustawiony na kolejkę komunikatów transakcyjnych dla całego systemu w usłudze MSMQ.

W przypadku komunikatów, które nie wymagają żadnych gwarancji, ten atrybut domyślnie ma wartość null.
Trwałe 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 nietrwały. Komunikaty nietrwałe są przydatne, gdy aplikacje wymagają mniejszego opóźnienia i mogą tolerować okazjonalne 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 jest dostarczany tylko raz. Nadawca zostanie powiadomiony o błędach dostarczania. Gdy durable parametr ma falsewartość , ten atrybut jest ignorowany, a komunikaty są przenoszone bez zapewnienia dostarczania. Wartość domyślna to true. Aby uzyskać więcej informacji, zobacz ExactlyOnce.
Maxreceivedmessagesize Dodatnia liczba całkowita, która definiuje 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 odrzuca komunikat i tworzy wpis zdarzenia w dzienniku śledzenia. Wartość domyślna to 65536. Ta granica 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 trucizny. Komunikat staje się komunikatem trucizny, gdy kończy się niepowodzeniem wszystkich prób dostarczenia wszystkich cykli. Wartość domyślna to 2. Aby uzyskać więcej informacji, zobacz MaxRetryCycles.
name 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 Uproszczona konfiguracja i Uproszczona konfiguracja dla usług WCF.
openTimeout TimeSpan Wartość określająca interwał czasu podany dla operacji otwierania do ukończenia. Ta wartość powinna być większa lub równa Zero. Wartość domyślna to 00:01:00.
Receiveerrorhandling ReceiveErrorHandling Wartość określająca sposób obsługi zatrutych i niedysponowalnych komunikatów.
Receiveretrycount Liczba całkowita określająca maksymalną liczbę natychmiastowych ponownych prób menedżera kolejek powinna podjąć próbę w przypadku niepowodzenia transmisji komunikatu z kolejki aplikacji do aplikacji.

Jeśli zostanie osiągnięta maksymalna liczba prób dostarczenia i komunikat nie jest uzyskiwany przez aplikację, komunikat jest wysyłany do kolejki ponawiania prób w celu ponownego dostarczenia w późniejszym czasie. Czas przed przeniesieniem komunikatu z powrotem do kolejki wysyłania jest kontrolowany przez retryCycleDelayelement . Jeśli cykle ponawiania próby osiągną maxRetryCycles wartość, komunikat zostanie wysłany do kolejki komunikatów trucizny lub do nadawcy zostanie wysłane potwierdzenie negatywne.
Receivetimeout TimeSpan Wartość określająca interwał czasu podany dla operacji odbierania do ukończenia. Ta wartość powinna być większa lub równa Zero. Wartość domyślna to 00:10:00.
receiveContextEnabled Wartość logiczna określająca, czy kontekst odbierania do przetwarzania komunikatów w kolejkach jest włączony. Gdy jest ono ustawione na true, usługa może "zajrzeć" komunikat w kolejce, aby rozpocząć jego przetwarzanie, a jeśli coś pójdzie nie tak i zostanie zgłoszony wyjątek, pozostaje w kolejce. Usługi mogą również "zablokować" komunikaty, aby ponowić próbę przetworzenia w późniejszym momencie. Funkcja ReceiveContext udostępnia mechanizm "ukończenia" komunikatu po przetworzeniu, dzięki czemu można go usunąć z kolejki. Komunikaty nie są już odczytywane i ponownie zapisywane w kolejkach za pośrednictwem sieci, a poszczególne komunikaty nie odbijają się między różnymi wystąpieniami usługi podczas przetwarzania.
Retrycycledelay Wartość TimeSpan określająca opóźnienie czasu między cyklami ponawiania 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:30:00. Aby uzyskać więcej informacji, zobacz RetryCycleDelay.
sendTimeout TimeSpan Wartość określająca interwał czasu podany dla operacji wysyłania do ukończenia. Ta wartość powinna być większa lub równa Zero. Wartość domyślna to 00:01:00.
serializacjaFormat Definiuje format używany do serializacji treści komunikatu. Ten atrybut jest typu MsmqMessageSerializationFormat.
timeToLive Wartość TimeSpan określająca, jak długo komunikaty są prawidłowe przed ich wygaśnięciem i umieszczane w kolejce utraconych komunikatów. 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 będą przetwarzane przez odbierające aplikacje. Komunikat w kolejce, który nie jest używany przez aplikację odbierającego w określonym przedziale czasu, mówi się, że wygasł. Wygasłe komunikaty są wysyłane do specjalnej kolejki nazywanej kolejką utraconych komunikatów. Lokalizacja kolejki utraconych komunikatów jest ustawiana z atrybutem DeadLetterQueue lub do odpowiedniej wartości domyślnej na podstawie gwarancji.
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.

{serializationFormat} Atrybut

Wartość Opis
Xml Format XML
Binarne Format binarny
ActiveX Format ActiveX
Bytearray Serializuje obiekt do tablicy bajtów.
Stream Treść sformatowana jako strumień

Elementy podrzędne

Element Opis
<Zabezpieczeń> Definiuje ustawienia zabezpieczeń powiązania. Ten element jest typu MsmqIntegrationSecurityElement.

Elementy nadrzędne

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

Uwagi

Ten element powiązania może służyć do włączania aplikacji Programu Windows Communication Foundation (WCF) do wysyłania komunikatów i odbierania komunikatów z istniejących aplikacji MSMQ korzystających z interfejsów API com, msMQ natywnych lub typów zdefiniowanych w System.Messaging przestrzeni nazw Można użyć tego elementu konfiguracji do określenia sposobów adresowania kolejki, gwarancji transferu, czy komunikaty muszą być trwale przechowywane, oraz sposób ochrony i uwierzytelniania komunikatów. Aby uzyskać więcej informacji, zobacz How to: Exchange Messages with WCF Endpoints and Message Queuing Applications (Instrukcje: wymiana komunikatów za pomocą punktów końcowych programu WCF i aplikacji kolejkowania komunikatów).

Przykład

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

Zobacz także