메시지 확인을 보장하는 방법은 jms 브로커에서 확인 응답이 수신되는 메시지까지 메시지 만 삭제합니다. 현재 jms 대기열에서 소비하고 부분적으로 처리하는 시스템이 있습니다. 나중에이 메시지의 일괄 처리가 다른 스레드에 의해 유지됩니다. 나는 지금 메시지에 대해 인정해야한다. 그러나 문제는 내가 메시지를 소비하는 것을 멈추어야한다는 것입니다. 그렇지 않으면 이전에받은 메시지를 확인하면 다른 모든 후속 메시지를 수신하게됩니다.메시지가 확인 될 때까지만 Jms 메시지를 수신 확인
즉, 큐에 10 개의 메시지가 있다고 가정합니다. 나는 그들 중 7 명을 소비하고, 다섯 번째 메시지에서 인정한다. 이렇게하면 대기열에서 소비자가받은 7 개의 메시지가 모두 제거됩니다. 5 번째 메시지까지 대기열에서 메시지를 확인하고 제거하는 방법이 있습니다.
편집 : 나는 두 개의 세션을 생성하고 다른 세션에서 소모하지만, (아파치 qpid의이어야 포함)이 일관성 수행 노력했다. 일관성이없는 말로하면, 테스트를하는 동안 한 소비자가 메시지를받을 수있는 반면, 다른 소비자는 메시지를받지 못하는 경우도 있습니다. 얼마나 오랫동안 기다려도 상관 없습니다. 이것은 해결책으로 나를 위해 일했을 텐데, 모순 때문에 해결책으로 이것을 사용할 수 없다.
사용중인 메시지 공급자를 지정하지 않았습니다. 하지만 지금까지 많은 메시징 제공 업체가 임의의 메시지 확인을 허용하지 않는다는 것을 알고 있습니다. 하나의 메시지를 확인하면 그 시점까지 수신 된 모든 메시지도 승인되어 대기열에서 제거됩니다. – Shashi
나는 apache qpid를 사용하며 임의의 승인을하지는 않지만 특정 메시지에 대해 승인을하고 있습니다. 그 전에 모든 메시지가 지워지지만 그 이상의 메시지가 수신되면 제거됩니다. – Raks