2016-07-05 2 views
1

대량 메시지가 Queue에 채워지는 경우 WSO2 ESB 4.9.0의 MQ JMS 프록시에 문제가 있습니다.WSO2 ESB 4.9.0의 JMS 프록시에서 조절을 설정하는 방법

프록시에 의해 호출 된 백엔드 서비스는 초당 50 개의 요청 만 처리 할 수 ​​있으며 백엔드 서비스는 실패합니다.

메시지가 큐 (1000messages)에 가득 차면 프록시가 큐에서 모든 메시지를 읽고 백 엔드 서비스 인 & 백 엔드 서비스가 실패합니다.

프록시 서비스에서 메시지 읽기를 제어하기 위해 프록시에서 설정할 수있는 설정이 있습니까?

여기서 중요한 문제는 프록시가 대기열에서 메시지를 읽고 백 엔드 서비스를 플러딩한다는 것입니다. 백엔드 서비스는 더 높은로드를 처리하도록 설계되지 않았기 때문에 실패했습니다.

답변

1

JMS 대기열을 청취하고 제어 된 방식으로 백엔드 서비스에 메시지를 보내려면 Message storeMessage Processor을 사용해야합니다.

+0

예 Asanka. 나는 메시지를 읽으려는 초당 10requests 말을하고 백엔드 서비스에 전달해야합니다. 기본적으로 jms 프록시는 백 엔드 서비스를 호출해야합니다 synchronoult 및 jms 프록시는 이전 메시지가 완료 될 때까지 Q에서 messgaes를 읽으려고 기다려야합니다. – storia321

1
당신은 당신의 프록시 서비스에 매개 변수를 정의 할 수 있습니다

: 당신이 보낼 수 있습니다 당신은 백 엔드 서비스에 메시지를 보낼 경우,

<parameter name="transport.jms.ConcurrentConsumers">1</parameter> 
<parameter name="transport.jms.MaxMessagesPerTask">1</parameter> 
<parameter name="transport.jms.MaxConcurrentConsumers">1</parameter> 

는 (여러분의 필요에이 값을 적용)

또한 블로킹 = "true"와 함께 호출 중재자를 사용하여 동기식으로 : 백엔드 서비스에서 응답을받을 때까지 프록시는 다음 jms 메시지를 대기열에서 제외하지 않습니다. 반면에 send mediator를 사용하는 경우 비동기식입니다. 다른 스레드 (콜백)가 응답을 기다리는 동안 중재가 계속되고 다음 프록시가 다음 jms 메시지를 대기열에서 제외합니다.

+0

고마워. 진. 내가 제공 한 속성을 시도했지만 운이 없다. 내 요구 사항은 초당 10 건의 요청을 읽으려면 프록시 jms 수신기를 만들고 싶다. 그런 속성은 jms 프록시에서 설정할 수 있습니다. – storia321

+0

이 경우 Asanka Vithanage 대답을 고려하십시오. 프록시 서비스가 저장소에 메시지를 저장할 수 있으며 샘플링 메시지 프로세서가 목표를 달성하는 데 도움을 줄 수 있습니다. –