2012-02-27 1 views
0

내 응용 프로그램에서 ActiveMQ를 JMS 구현 서버로 사용하고 있습니다. 시나리오는 게시 된 메시지를 사용하는 영구 가입자가 많고 메시지 객체의 데이터를 중앙 DB 서버에 저장하는 메시지 수신기와 같은 주제가 있습니다. 동일한 주제에 대해 지속성 메시지를 계속 게시하는 제작자 스레드가 있습니다. 영구적 인 Message Store에 KahaDB를 사용하고 있습니다. 메시지가 게시 되 자마자 kahaDB는 메시지 스토어에 데이터 로그 파일을 생성하여 모든 영구 가입자가 메시지를 소비 할 때까지 메시지를 지속시킵니다. 어떤 시점에서 JMS 서버를 종료하고 모든 데이터 로그 파일을 삭제했는지 알고 싶습니다. 어떤 영향을 미치는지 알고 싶습니다. 내구성이 강한 일부 구독자가 데이터 로그 파일에있는 메시지를 수신하지 못하게 될 것인가 아니면이 메시지를 통해 메시지 수신자가 중앙 데이터베이스에 저장하지 않은 메시지가 거의 없을 가능성이 있습니다 . 힌트 나 도움이 대단히 감사합니다 ...... 미리 감사드립니다.ActiveMQ에서 MessageListener가 메시지 저장소의 데이터 로그 파일에 의존하는지 여부

답변

2

데이터 파일을 삭제하는지 여부에 관계없이 브로커를 중지하고 시작하면 아직 게시 된 메시지를받지 않은 주제 소비자는 더 이상 해당 메시지를받지 않습니다. 이 문제의 배경은 주제에 보낸 메시지가 영구 메시지 저장소에 기록되지 않기 때문입니다.

내구성과 지속성은 동일하지 않습니다. 내구성있는 가입은 가입자가 연결을 끊을 경우 가입 상태를 유지하도록 브로커에 지시합니다. 소비자 연결이 끊어진 동안 보낸 메시지는 보관됩니다. 반면에 비 영구 가입은 유한합니다. 가입자가 연결을 끊으면 중간에 전송 된 메시지가 누락됩니다. 모든 메시지는 메모리에 저장되며 브로커를 다시 시작한 후에도 유지되지 않습니다.

메시지 지속성은 최종 배달을 위해 메시지를 저장합니다. 이것은 파국적 인 실패에 대비하거나 아직 활동하지 않을 수도있는 소비자에게 나중에 전달하도록합니다.

pub-sub를 사용하여 메시지를 브로드 캐스팅하고 브로커가 다시 시작될 때까지 지속성이 유지되는 구독을 유지하려면 영구 가입 대신 virtual destinations을 사용해야합니다.

메시지가 지속되거나 지속되지 않으면 브로커를 전환하고 데이터 디렉토리를 삭제하지 않고 계속 살아납니다.

관련 문제