문제

org.hornetq.api.core.client를 사용하고 있습니다 실제로 queue (queue 만 아닌) (클라이언트가 아님) 보내는 메시지를 어떻게 보장 할 수 있습니까?

producer.send("validQueue",clientMessage) 
.

대기열은 유효한 대기열입니다.

유사한 질문 가 잘못된 대기열을 참조하고 있습니다.이 하나의 와 같은 다른 것들은고객에게 배달.

도움이 되었습니까?

해결책

그것은 당신이 어떻게 보내는지에 달려 있습니다.

당신의 첫 번째 질문은 곧되었습니다 첫째, JMS에서 제작자가 대기열의 존재를 확인하기 때문에 유효하지 않은 대기열로 보내기를 원할 수 있습니다. Hornetq 코어 API에서 주소 (대기열이 아님)로 보내면 언 바운드 대기열이있을 수 있습니다. 주소가 대기열이 있거나 아닌 경우 쿼리해야합니다.

이제 메시지가 수신 된 확인을 위해 다음과 같습니다.

  • 시나리오 I, 지속성 메시지, 트랜잭션 별

모든 메시지가 전송됩니다. 클라이언트는 서버를 수신 한 서버가 메시지를 수신하면 즉시 클라이언트가 차단 해제됩니다. 이것은 자동으로 수행됩니다. 아무 것도 할 필요가 없습니다.

  • 시나리오 II, 비 지속성 메시지, 트랜잭션이 아닌

기본적으로 확인이 없습니다. 메시지가 비동기 적으로 전송됩니다. 우리는 메시지가 일시적이며 잃어버린다면 큰 문제가 아닙니다. ServerLocator에서 블록 - on-persistent-send를 설정하여 변경할 수 있습니다.

  • 시나리오 III, 거래 (지속적이거나 아닌).

커밋을 호출하는 즉시 메시지가 대기열에 있습니다.

  • 시나리오 IV, 확인 메시지 보내기

콜백을 설정하고 서버가 대기열에 ACKED로 해시 자마자 메소드 호출을 가져옵니다. 확인 콜백을 위해 설명서를 살펴보십시오. JMS2에는 동일한 기능이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top