Pregunta

Estoy configurando un oyente de suscriptores de JMS de la siguiente manera con el objetivo de lograr un grupo de 5 hilos que escuchan topatópicos, sin embargo, lo que veo en tiempo de ejecución es que los consumidores múltiples procesan el mismo disco (discoNcunt*#de los consumidores).

Supongo que estoy haciendo algo mal teniendo en cuenta que soy nuevo en la primavera.

<bean id="messageListener" class="com.abc.app.mdp.Receiver">
<property name="bean" ref="bean" />
</bean>

<jms:listener-container container-type="default"
connection-factory="connectionFactory" acknowledge="auto" concurrency="5" destination-type="topic" prefetch="1" cache="none" >
<jms:listener destination="topCli_Service" ref="messageListener" 
method="onMessage" subscription="AProjectSubscriber" />
</jms:listener-container>

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

¿Alguien puede señalarme en una dirección para lograr mi objetivo?

¿Fue útil?

Solución

Echa un vistazo al concurrencia Configuración en la configuración del contenedor de su oyente. los Primavera JMS Doc sugiere que la concurrencia debe establecerse en 1 para los oyentes de los temas. Vea abajo.

Concurrencia: el número de sesiones/consumidores concurrentes para comenzar para cada oyente. Puede ser un número simple que indique el número máximo (por ejemplo, "5") o un rango que indique el límite inferior y superior (por ejemplo, "3-5"). Tenga en cuenta que un mínimo especificado es solo una pista y podría ignorarse en tiempo de ejecución. El valor predeterminado es 1; Mantenga la concurrencia limitada a 1 en el caso de un oyente de temas o si el orden de la cola es importante; Considere criarlo para colas generales.

Esta publicación es similar al resto de su pregunta.

Si necesita múltiples hilos para mantenerse al día con el volumen de mensajes, el oyente de su mensaje podría delegar a un resorte Taskexecutor para procesar los mensajes de manera asincrónica. Taskexecutors puede ser respaldado por una serie de implementaciones, incluida la piscina de subprocesos.

Otros consejos

Si desea un mensaje determinado por uno y solo un consumidor, debe usar una cola en lugar de un tema. Se transmite un mensaje de tema a todos los consumidores disponibles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top