2017-09-27 10 views
1

정상적으로 작동하는 서비스 버스에서 메시지를받는 WebJob이 있습니다. Webjob이 완료되지 않거나 예외를 throw하지 못하면 메시지는 자체적으로 양호한 대기열로 다시 전송됩니다.Azure WebJob Service Bus 오류시 대기열의 infront 메시지

MaxDequeueCount를 10으로 설정했는데 다시 처리하려고 시도 할 때 실패 할 경우 문제가되지 않습니다. 그러나 문제는 메시지가 대기열의 맨 아래로 보내지고 다른 메시지가 먼저 실패한 것으로 처리되기 전에 처리되는 것입니다.

동일한 엔터티에 여러 개의 업데이트가 연속적으로 표시 될 수 있으므로 한 번에 하나의 메시지 만 처리하고 싶습니다. 순서가 변경되면 엔티티가 잘못된 순서로 업데이트됩니다.

오류가 발생하면 대기열에서 메시지를 다시 전송하거나 MaxDequeueCount에 도달 할 때까지 동일한 메시지에서 작업을 계속할 수 있습니까?

답변

0

메시지 순서에 의존하지 않는 것이 가장 이상적입니다.

사용자의 요구 사항을 고려할 때 Azure 서비스 버스 Sessions의 FIFO 의미를 사용할 수 있습니다. 메시지가 세션 내에서 처리되고 메시지가 인 경우이 중단되면 대기열의 끝으로 이동하지 않고 다시 처리됩니다. 한 번

  • 에 하나의 메시지를 처리 ​​할 수 ​​
    1. 메시지가 완료되지 및이 중단되지 않으면
    2. 사용하는 세션이 남아있을 것입니다 매달려 요구 사항 : 다음을 명심해야합니다 대기열에 있으며 세션이 다시 시작될 때 선택됩니다.