Весенняя тема Абонентский пул потоков - PullRequest
0 голосов
/ 03 мая 2011

Я уже несколько дней слежу за форумами и веб-сайтами о том, как создать пул потокового подписчика JMS без особой удачи.При использовании очереди с контейнером jms: listener есть свойство параллелизма, однако, с темой, в которой говорится, чтобы поддерживать параллелизм на 1. Учитывая это, каковы мои варианты для объединения потоков подписчику темы?

Я начал с маршрута MessageListener с реализацией onMessage с:

    <bean id="messageListener" class="com.app.mdp.Receiver"/>
    <jms:listener-container container-type="default"
        connection-factory="connectionFactory" acknowledge="auto" concurrency="1"
        destination-type="topic" prefetch="1">
        <jms:listener destination="topTopic" ref="messageListener"
            method="onMessage" subscription="ASub" />
    </jms:listener-container>

    <bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="jms/jms-top-notx" />
    </bean>

Проблема в том, что я получаю не более одного потока, получающего данные из JMS одновременно.

Iзатем попытался использовать исполнителя задач с config:

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
  <property name="corePoolSize" value="10" />
  <property name="maxPoolSize" value="20" />
  <property name="queueCapacity" value="0" />
</bean> 

.. но, похоже, требуется, чтобы параллелизм имел большее значение в настройке jms: listener-container (если я не неправильно понял).Тем не менее, я получал только один поток за раз.

Я немного растерялся и начинаю думать, что у Spring нет функции поддержки нескольких потоков при подписке на данные тем JMS.Если это так, мои варианты выглядят так:

  • реализовать мой собственный пул потоков.планировать subscriber-> цикл через jmsTmplate.receive () data-> передавать каждое сообщение в предопределенный поток
  • возвращаться обратно в EJB (что я не хочу делать)
  • что-то еще яЯ еще не думаю о

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 04 мая 2011

Используете ли вы Websphere для JMS.Если да, то в Websphere есть конфигурация, в которой вы можете настроить количество соединений и сеансов, которые вы можете установить для приложения за раз.Предположим, что если у вас есть 10 сеансов и 10 соединений, то у вас будет 100 соединений (каналов), открытых для MQ-сервера.обратитесь по этой ссылке: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/umj_sesspoolset.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...