Как ограничить количество сообщений, которые слушатель читает из очереди JMS в Weblogic? - PullRequest
0 голосов
/ 05 декабря 2018

У меня JMS Queue настроен в WebLogic Server 12c.После того, как сообщения прочитаны слушателем, другой веб-сервис вызывается.Когда количество сообщений велико, другой веб-сервис дает сбой из-за слишком большого количества потоков, пытающихся использовать тот же сервис.

Есть ли способ в WebLogic ограничить количество сообщений, которые можно прочитать из JMSОчередь?Скажем, я хочу читать 10 сообщений одновременно и только когда один из потоков завершил выполнение, а затем читать только 11-е сообщение.

Класс прослушивателя:

@MessageDriven(name="MyListener",activationConfig = { 
    @ActivationConfigProperty(propertyName = "initialContextFactory", propertyValue = "weblogic.jndi.WLInitialContextFactory"), 
    @ActivationConfigProperty(propertyName = "connectionFactoryJndiName", propertyValue = "jms/Spry"), 
    @ActivationConfigProperty(propertyName = "destinationJndiName", propertyValue = "jms/SP_ACC_RQ") ,
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue") }) 
public class MyListener implements MessageListener {

@Override
public void onMessage(Message message)  {
    try{
        MyProcessBusinessImpl businessImpl = new MyProcessBusinessImpl();
        TextMessage textMessage = (TextMessage) message;
        msgText = textMessage.getText();
        businessImpl.startAssessment(msgText);
    }catch(Exception e){
        // log exception
    }   
  }     
}

Я пытался использоватьаннотацию maxMessagesInTransaction в @ActivationConfigProperty, а также попытку WorkManager в консоли администратора WebLogic, но ни одна из них не является решением моей проблемы.

...