2016-07-15 7 views
1

부하 테스트 후 일부 패킷이 순차적이지 않음을 발견했습니다.MSMQ : MSMQ는 순차적 메시지 전달을 보장합니까?

기본 WCF 서비스이고 클라이언트가 계속 요청을 보내고 있습니다.

+0

[this] (https://blogs.msdn.microsoft.com/napegadie_kones_msft_blog/2015/02/07/wcf-processes-messages-from-msmq-out-of-order-using-netmsmqbinding/)이 당신이 찾고있는 것. 그러나 나는 [this] (http://stackoverflow.com/questions/13802385/how-to-enforce-message-queue-sequence-with-multiple-wcf-service-instances)가 더 지속 가능한 해결책이라고 생각한다. – khlr

+0

순차적 메시지 전달을 보장하지 않습니다. – User

+1

구성에 따라 항목을 재시도 대기열에 둘 수 있습니다. 메시지 순서는 기본적으로 변경됩니다. 메시지 순서에 따라 솔루션을 설계하지 마십시오. –

답변

0

netMsmqBinding을 사용하여 보장 된 (순서대로, 정확히 한 번) 배달이 가능합니다.

먼저해야 할 일은 실제 MSMQ 메시지 큐를 트랜잭션으로 만드는 것입니다.

둘째, 당신은 너무 같은 트랜잭션에 참여하는 WCF 알려야합니다 :

<netMsmqBinding> 
    <binding name="netMsmqBinding_IMyServiceInterface" 
      exactlyOnce="true"> 
    ... 
    </binding> 
</netMsmqBinding> 

:

[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)] 
public void Handle(Something msg) 
{ 
    .... 
} 

는 마지막으로, 당신은 exactlyOnce 바인딩 있었던 파라미터를 사용하여 서비스의 보장 동작을 지정해야 ExactlyOnce는 우리에게 트랜잭션이 필요하다는 것을 WCF에 알리고, 각 메시지는 정확히 한 번 전달 된 순서대로 전달됩니다.

+0

답장을 보내 주셔서 감사합니다. 정확히 동일했으나 시퀀스를 보장하지는 않았습니다. – User

+0

@ 사용자 - 잘못된 순서로 메일이 도착 했습니까? 어떻게이 일을 성취하셨습니까? 또한 서비스 인터페이스 및 구현 pls를 게시 할 수 있습니까? –

+0

@ 사용자 또한 하나의 서비스가 실행 중이거나 둘 이상으로 확장되어 있습니까? –