Aracılığıyla paylaş


ReceiveErrorHandling Sabit listesi

Tanım

Zehirli iletilerin işlenmesini belirtir.

public enum class ReceiveErrorHandling
public enum ReceiveErrorHandling
type ReceiveErrorHandling = 
Public Enum ReceiveErrorHandling
Devralma
ReceiveErrorHandling

Alanlar

Name Değer Description
Fault 0

Bu seçenek, ServiceHost'un hataya neden olan dinleyiciye bir hata gönderir. Uygulamanın kuyruktan gelen iletileri işlemeye devam etmesi için önce iletinin bir dış mekanizma tarafından uygulama kuyruğundan kaldırılması gerekir.

Drop 1

Bu seçenek zehirli iletiyi bırakır. İleti hiçbir zaman uygulamaya teslim olmaz. İletinin TTL'sinin süresi bu noktada zaten dolduysa, ileti gönderenin Teslim Edilemeyen İleti Kuyruğunda görünebilir. Aksi takdirde, ileti hiçbir yerde görünmez. Bu seçenek, kullanıcının iletinin kaybedilip kaybolmadığını gerçekten umursamadığını gösterir.

Reject 2

Bu, MSMQ'ya gönderen kuyruk yöneticisine iletinin uygulama tarafından alınamayacağına ilişkin olumsuz bir onay göndermesini sağlar. İleti, gönderen kuyruk yöneticisinin Teslim Edilemeyen İleti Kuyruğuna yerleştirilir.

Move 3

Bu, zehirli ileti işleme uygulaması tarafından daha sonra işlenmek üzere zehirli iletiyi Bir Zehirli İleti Kuyruğuna taşır.

Örnekler

Aşağıdaki yapılandırma kodu, hizmet yapılandırma dosyasında bu özelliğin nasıl ayarlandığını gösterir:

<configuration>
  <appSettings>
    <!-- use appSetting to configure MSMQ queue name -->
    <add key="queueName" value=".\private$\ServiceModelSamplesPoison" />
    <add key="baseAddress" value="http://localhost:8000/orderProcessor/poisonSample"/>
  </appSettings>
  <system.serviceModel>
    <services>
      <service 
              name="Microsoft.ServiceModel.Samples.OrderProcessorService">
        <!-- Define NetMsmqEndpoint -->
        <endpoint address="net.msmq://localhost/private/ServiceModelSamplesPoison"
                  binding="netMsmqBinding"
                  bindingConfiguration="PoisonBinding" 
                  contract="Microsoft.ServiceModel.Samples.IOrderProcessor" />
      </service>
    </services>

    <bindings>
      <netMsmqBinding>
        <binding name="PoisonBinding" 
                 receiveRetryCount="0"
                 maxRetryCycles="1"
                 retryCycleDelay="00:00:05" 					 
                 receiveErrorHandling="Fault"
                        />
      </netMsmqBinding>
    </bindings>
  </system.serviceModel>
</configuration>

Açıklamalar

Zehirli ileti, uygulamaya teslim etme girişimlerinin başarısız olduğu bir iletidir. Bu yalnızca Message Queuing (MSMQ) tabanlı bağlama kullanıldığında geçerlidir. Varsayılan değer, dinleyiciyi ve dolayısıyla ServiceHost'un hatasını veren değeridir Fault. Hizmetin zehirli bir ileti nedeniyle hataya neden olması durumunda bir MsmqPoisonMessageException oluşturulur. Özel durum, System.Messaging API'sini kullanarak iletiyi yoldan çıkarmak için kullanılabilecek MSMQ iletisini içerir LookupId . ve gibi RejectMove sabit listesi değerleri ReceiveErrorHandling yalnızca Windows Vista'da kullanılabilir. Özelliğini bu numaralandırmanın ReceiveErrorHandling değerlerinden birine ayarlayarak zehirli ileti işlemeyi denetleyebilirsiniz.

Şunlara uygulanır

Ayrıca bkz.