1

tomcat에 배포 된 스프링 응용 프로그램에 의해 노출되는 javascript/websockets를 사용하여 토끼 mq 브로커에 연결하는 웹 페이지가 있습니다. 메시지는 외부 응용 프로그램에서 초당 1 개씩 생성되며 웹 페이지에 렌더링됩니다. 자바 스크립트 구독은 내구성이 있습니다.STOMP를 통한 RabbitMQ 내구성 큐 손실 메시지

enter image description here

내가 겪고있어 문제는 네트워크 연결이 일정 기간 동안 자바 스크립트 클라이언트에서 파손 된 경우 (60초 말), 메시지의 첫 번째 ~ 24초이없는 것입니다. 나는 바람둥이에 배포 된 응용 프로그램의 로그를 검토 한 결과 누락 된 메시지는 다음 로그 문까지 것 같다 :

org.springframework.messaging.simp.stomp.StompBrokerRelayMessageHandler - DEBUG - TCP connection to broker closed in session 14 

내가이 엔드 포인트 연결이 끊어 자바 스크립트 클라이언트를 실현하는 지점이라고 생각 브로커에 대한 연결을 닫으려고 결정하여 향후 메시지가 대기열에 남아있게합니다.

제 질문은 네트워크가 단절된 시간과 끝점에서 클라이언트 연결이 끊어짐을 인식하는 시간 사이의 메시지가 손실되지 않도록하려면 어떻게해야합니까? 끝점에서 메시지를 다시 대기열에 넣어야합니까? 아마도 트랜잭션화할 수있는 방법이 있을까요?

미리 감사드립니다.

답변

2

RabbitMQ 팀은 this mailing list을 모니터링하며 때때로 StackOverflow에 대한 질문에만 답변합니다. 그것은 당신의 자바 스크립트 클라이언트를받은 것을 확인할 때까지


귀하의 Tomcat 응용 프로그램은 RabbitMQ 메시지를 인정해서는 안된다. 이렇게하면 JS 클라이언트가 승인하지 않은 메시지는 Tomcat에 의해 승인되지 않고 RabbitMQ가 메시지를 다시 전달합니다.

JS 앱과 Tomcat이 상호 작용하는 방식을 잘 모르겠지만 독자적인 ack 프로세스를 구현해야 할 수도 있습니다.