2012-12-03 2 views
1

그래서 WCF 서비스에서 MSMQ를 설정했습니다. 나는 msmqIntegrationBinding을 사용하여 로컬 큐에 전자 메일을 덤프 한 후 직접 서비스를 가져 와서 처리합니다. 모든 작업은 정상적으로 작동하지만 사용자 정의 데드 레터 큐를 추가하려고 시도하지만 작동하지 않는 것 같습니다. 오류가 발생한 상태에서의 서비스, 내가 정의한 사용자 정의 큐는 결코 그 안에있는 어떤 것으로 끝나지 않습니다. 문제는 내가 customDeadLetterQueue 값으로 net.msmq 값 대신 직접 대기열을 사용하려고한다는 것입니다.net.msmq 대신 직접 큐를 사용하여 customDeadLetterQueue를 확인하십시오.

몇 가지 예를 들어 더 명확히하려고 노력하겠습니다. 내가 보았던 모든 표본이 이처럼 보입니다.

<binding name = "CustomDLQ" 
     deadLetterQueue = "Custom" 
     customDeadLetterQueue = "net.msmq://localhost/private/MyCustomDLQ"> 
    </binding> 

내 구성은 다음과 같습니다.

<msmqIntegrationBinding> 
    <binding name="EmailProcessorBinding" 
      deadLetterQueue="Custom" 
      customDeadLetterQueue="msmq.formatname:DIRECT=OS:.\private$\failedmessages" 
      durable="true" 
      receiveRetryCount="2" 
      receiveErrorHandling="Move" 
      maxRetryCycles="3" > 
     <security mode="None" /> 
    </binding> 
    </msmqIntegrationBinding> 

customDeadLetterQueue? 그게 효과가 없습니까? 아니면 다른 곳에서 실수를 했습니까?

감사합니다.

+0

은 왜 net.msmq 주소 형식을 사용하여 큐를 해결할 수없는 이유는 무엇입니까? –

+0

그래, 나는 혼란 스러웠다 고 생각해. 그래도 나는 무엇을 해야할지 말할 필요가 없었습니다. 감사합니다. – Kenn

답변

1

분명히 경험 부족 때문에이 기능을 놓쳤지 만 사용하고 싶은 큐를 명시 적으로 말할 필요가 없었습니다. 이것이 궁극적으로 바인딩 구성 방법이었습니다.

<msmqIntegrationBinding> 
<binding name="EmailProcessorBinding" 
        durable="true" 
        receiveRetryCount="0" 
        receiveErrorHandling="Move" 
        retryCycleDelay="00:20:00" 
        maxRetryCycles="3" > 
    <security mode="None" /> 
</binding> 
</msmqIntegrationBinding> 

실패한 메시지를 어떻게 처리해야하는지 알 필요가 없습니다. 그것은 실패 할 때 단지 poison이라는 서브 대기열에 넣을 것이고 구성은 필요 없습니다.

sub queue with poison message in it

관련 문제