MSMQ에서 트랜잭션 큐를 만들었습니다. 그런 다음 해당 대기열에 두 개의 메시지를 성공적으로 제출합니다. 첫 번째 메시지는 프로세서에서 오류를 일으키고 MSMQ 트랜잭션은 롤백됩니다. 따라서 메시지는 대기열에 다시 저장됩니다. 두 번째 메시지는 처리되고 MSMQ 트랜잭션이 커밋 될 때 성공합니다.MSMQ 트랜잭션
참고 : 첫 번째 메시지를 다른/포이즌 큐로 옮길 수있는 코드가 아직 없습니다. 즉, 처리를 위해 계속 처리 될 것이므로 이론적으로 메시지 2는 결코 처리 될 수 없습니다.
문제점 : 해당 트랜잭션 대기열에서 메시지를 처리하는 리스너/프로세서가 1 개있는 경우 메시지 2가 선택되지 않습니다. 이것은 예상된다.
그러나 두 명의 수신기가 있으면 메시지 # 2가 선택됩니다. 그것은 나를 혼란스럽게합니다. 나는 MSMQ 트랜잭션 큐가 메시지를 도착한 순서대로 처리 할 수 있다고 생각했다.
사이드 노트 : 메시지 1을 더 이상 처리 할 수 없다고 결정하고 다른 대기열로 이동하는 방법을 결정하려면 어떻게합니까? MSMQ는 프로세서에서 메시지를 가져온 횟수를 계속 계산합니까?