2011-01-04 2 views
0

DistributedTxMessageListenerContainer의 MaxConcurrentListereners가별로 사용하지 않을 수 있습니까? 한 번에 하나의 스레드 만 대기열에서 메시지를 처리 ​​할 수 ​​있다는 인상을 받았습니다. 트랜잭션이 성공하면 메시지가 대기열에서만 제거되므로 논리적 일 수 있습니다. 아니면 내가 틀린거야?MSMQ의 MaxConcurrentListeners 및 원격 트랜잭션 읽기

답변

2

예, 하나의 스레드 만 대기열에서 특정 메시지를 수신 할 수 있습니다.
여러 스레드가 한 번에 큐에서 메시지를받을 수 있습니다.
메시지가 큐에서 트랜잭션 적으로 수신되면 트랜잭션이 커밋을 중단 할 때까지 다른 모든 스레드에서 보이지 않게됩니다.
메시지가 중단되면 메시지가 대기열에 다시 나타납니다 (다시 표시됨). 커밋되면 메시지가 큐에서 실제로 삭제됩니다.

건배
존 Breakwell

+0

음, 난 여전히 같은 문제로 남아있어 걱정입니다. 트랜잭션 읽기에서 한 번에 하나의 스레드 만 메시지를 처리 ​​할 수 ​​있다는 인상을 받았습니다. 따라서 스레드 A는 맨 위 메시지를 처리합니다. 처리 된 후에는 스레드 A 또는 스레드 B가 다음 메시지를 처리합니다. 동시 처리는 수행되지 않습니다. –

+0

성능에 문제가 있습니까? 당신에게 단일 스레드의 느낌을주는 것은 무엇입니까? –

+0

여러 메시지가 대기열에 있기 때문에 두 스레드가 있어도 동시 처리되지는 않지만 하나씩 처리된다는 것을 알 수 있습니다. –