2014-12-30 3 views
0

activemq를 통해 100 개의 메시지가 소비자에게 전달되기를 원하지만 동시에 프로듀서는 한 번에 하나씩 메시지를 생성합니다.ActiveMQ의 Listener에 여러 메시지를 함께 전달하는 방법은 무엇입니까?

이유 나는 배달시 각 메시지를 개별적으로 처리하는 오버 헤드를 처리하고 싶지 않기 때문에 대신 배달시 대량 처리를 원합니다.

ActiveMQ를 통해이를 달성 할 수 있습니까? 아니면이를 달성하기 위해 직접 수정해야합니까?

+0

스프링 배치 (또는 카멜)와 같은 프레임 워크를 볼 수는 있지만 어쨌든 디자인이 잘못되었을 수 있습니다. 거래는 어떨까요? – Raffaele

+0

거래는 내가 찾고있는 것이지만 내가 필요한 것은 한 번에 하나씩 메시지를 만들어 대량으로 전달할 수 있다는 것입니다. – vmeghani

+0

버퍼가 필요하므로 ** 버퍼를 채우거나 처리하는 동안 오류가 발생하면 **해야 할 작업을 결정해야합니다. – Raffaele

답변

1

ActiveMQ는 JMS 1.1 클라이언트/브로커 구현이므로 메시지를 대량으로 전달할 API가 없으므로 async listener가 한 번에 하나씩 메시지를 전달합니다. 클라이언트는 하나 이상의 메시지를 프리 페치하지만 비동기 수신자를 사용하여 메시지를 처리하는 오버 헤드가 매우 낮습니다.

0

모든 메시지를 버퍼에 넣고 버퍼에 N 개의 메시지가 포함되어있을 때만 처리하면 목표를 달성 할 수 있습니다. 작동 시키려면 CLIENT_ACKNOWLEDGE와 같은 확인 모드를 사용하여 처리 될 때까지 버퍼에있는 메시지를 확인하지 못하게 할 수 있습니다. 그런 식으로 클라이언트가 메모리에있는 일부 메시지와 충돌 한 경우 클라이언트가 다시 돌아올 때 다시 배달됩니다.

관련 문제