2009-12-08 1 views
0

나는 그렇게으로합니다 (NMS 라이브러리를 사용하여 C#에서) 내 소비자를 만듭니다DLQ로 이동하는 대신 트랜잭션 ActiveMQ 메시지가 삭제되는 이유는 무엇입니까?

 ConnectionFactory factory = new ConnectionFactory(_mqServer); 
     _con = factory.CreateConnection(); 
     _con.Start(); 
     _session = _con.CreateSession(AcknowledgementMode.Transactional); 
     _queue = _session.GetQueue(_mqQueue); 
     _consumer = _session.CreateConsumer(_queue, "someproperty = 'someValue'"); 

내가 메시지를 수신하고 세션에 커밋 호출하지 않는, 원래 대기열로 돌아갑니다. 그런 다음 폐기되기 전에 다시 배달을 5 번 시도합니다. 왜 메시지가 DLQ로 전송되는 대신 삭제됩니까?

답변

0

실제로 폐기되는 경우 실제로 버그 일 수 있습니다. 재현을 시도하지는 않았지만 응용 프로그램의 디버그 중에 실제로 비슷한 문제 (트랜잭션 커밋을 잊어 버렸음)가 있고 메시지가 DLQ로 이동했습니다. 두 번 다시 시도한 후 .. 그래서 그들은 단지 버려진다고 확신하는 경우 버그 일 수 있습니다.

+0

100 % 무시됩니다. 또한 100 % 확실하지 않습니다. 그것은 모든 시간에 일어나는 일은 아니지만, 나는 다시 할 수 있습니다. – TheSoftwareJedi