Канал JMS не использует многопоточность - PullRequest
0 голосов
/ 22 сентября 2018

Я читаю сообщение, преобразовываю его и выводлю на канал JMS.Канал JMS использует WorkManager Task Executor для чтения сообщений и их обработки.Несмотря на то, что мы настроили WorkManager на сервере приложений на 10 потоков, используется только один поток.

<si:chain id="prenotifchain" input-channel="preNotificationChannel"  output-channel="notificationJMSChannel">           
    <si:transformer id="prenotif"  method="transformRequest"  ref="notificationTransformer"/>   
</si:chain> 



<si-jms:channel id="notificationJMSChannel" queue="notificationQueue" connection-factory="queueConnectionFactory" transaction-manager="txManager" task-executor="notificationTaskExecutor"  />

<jee:jndi-lookup id="notificationQueue" jndi-name="jms/notifqueue"/>    


    <bean id="notificationTaskExecutor"
    class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor">
    <property name="workManagerName" value="notifWM" />
    <property name="resourceRef" value="true" />
</bean>

Нам не хватает какой-либо конфигурации или есть другой способ прочитать несколько?

1 Ответ

0 голосов
/ 22 сентября 2018

Пожалуйста, используйте concurrency атрибут:

<xsd:attribute name="concurrency" type="xsd:string">
        <xsd:annotation>
            <xsd:documentation><![CDATA[
The number of concurrent sessions/consumers to start for each listener.
Can either be a simple number indicating the maximum number (e.g. "5")
or a range indicating the lower as well as the upper limit (e.g. "3-5").
Note that a specified minimum is just a hint and might be ignored at runtime.
Default is 1; keep concurrency limited to 1 in case of a topic listener
or if message ordering is important; consider raising it for general queues.
            ]]></xsd:documentation>
        </xsd:annotation>
    </xsd:attribute>
...