2017-12-27 50 views
0

사용 사례 : 한 서버에서 다른 서버로 대기열을 통해 거대한 파일 (100MB 배수)을 보내야합니다.Activemq - 불안정한 연결을 통해 거대한 파일을 보내는 최상의 프로토콜

현재 Activemq Artemis 서버를 사용하여 재시도 간격이 -1 인 TCP 프로토콜을 통한 입력 스트림의 도움으로 ByteMessage로서 거대한 파일을 무제한 페일 오버 재 시도를 위해 -1로 보냅니다. 여기서 주요한 문제는 소비자 엔드 포인트 연결이 대부분 불안정하기 때문입니다. 즉 이동성으로 인해 네트워크 연결이 끊어집니다.

따라서 파일을 대기열로 보내는 동안 연결이 끊어지고 다시 연결 브로커가 트랜잭션이 중단 된 곳에서 다시 시작해야합니다 (예 : 300MB의 파일을 소비자 대기열로 전송하는 동안 100MB의 일부가 소비자로 전송된다고 가정) 대기열 서버에 연결되면 잠시 후에 연결이 끊어지고 다시 연결되면 프로세스는 300mb가 아닌 200mb를 다시 전송해야합니다.

내 질문은 하나가 최고의 프로토콜 인이다 (TCP는 테야 및은 OpenWire) 및 모범 사례 (blobmessage, bytemessage 입력 스트림)의 ActiveMQ 아르테미스에있는 것입니다

답변

1
아파치 ActiveMQ를 아르테미스가 지원

"큰"메시지를 달성하기 위해 (Netty TCP를 사용하는) 네트워크를 통해 스트리밍하십시오. 이 내용은 the documentation에 있습니다. 참고 :이 기능은 "핵심"클라이언트에만 해당됩니다. STOMP 또는 OpenWire에서는 작동하지 않습니다. 또한 연결이 끊긴 경우 메시지 전송이 중지되는 지점에서 "재시작"기능을 지원하지 않습니다.

내 메시지는 네트워크 속도가 느려지거나 연결이 끊어진 경우에 처리하기 쉬운 개별 메시지의 작은 단위로 메시지를 보내는 것입니다. 메시지는 상관 ID 등으로 그룹화 될 수 있으며, 최종 클라이언트는 메시지 조각을 가져 와서 모두 수신하면이를 결합 할 수 있습니다.