У меня 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, но ни одна из них не является решением моей проблемы.