2012-05-21 4 views
0

저는 MSMQ 4.0을 처음 접했습니다. 나는 아래의 시나리오를 고수했다. 서비스 A는 사용자 정보를 가져와 사용자 ID를 반환합니다. 그런 다음 서비스 B는 사용자 ID로 대금 결제를합니다. 이제 이러한 단계를 대기시켜야합니다. 트랜잭션 큐를 사용할 계획입니다. 일부 사람이 나를 도와주세요 1) 첫 번째 메시지에서 ID를 가져 와서 두 번째 메시지에 포함 시키십시오. 2) 하나 이상의 단계가 실패한 경우 롤백 (트랜잭션 대기열에서 수행)을 다시 시도하거나 5 번 시도한 다음 여전히 실패한 경우 관리자가 확인을 위해 VerifyAdminQueue로 이동합니다. DeadLetter Queue 등을 사용하지 않습니다.send.Message에서 반환 값을 얻고 MSMQ에서 두 번째 메시지의 일부로 반환 된 값을 포함시키는 방법은 무엇입니까?

미리 감사드립니다.

답변

1

MSMQ 대기열로 작성된 서비스는 진정한 단방향입니다. 이것은 응답 개념이 없다는 것을 의미합니다. MSMQ를 사용하여 요청 - 응답 통신 패턴을 구현할 수있는 방법에는 여러 가지가 있지만 모두 함께 응답자를 구성하여 발신자에게 직접 보내야합니다.

편도 동작을 사용하면 롤백이 매우 간단하며 실제로 MSMQ는 메시지 전송시 실패한 단계를 롤백합니다. 그러나 요청 응답과 같은 더 복잡한 작업에는 MSMQ에서 트랜잭션의 개념이 없으므로 둘 이상의 메시지 전송 단계에서 모든 롤백은 보상 코드를 작성해야합니다.

관련 문제