¿Número máximo de mensajes enviados a una cola en OpenMQ?

votos
1

Actualmente estoy usando Glassfish v2.1 y he configurado una cola para enviar y recibir mensajes desde Sesion beans y MDBs respectivamente. Sin embargo, me he dado cuenta de que puedo enviar solo un máximo de 1000 mensajes a la cola. ¿Hay alguna razón por la que no puedo enviar más de 1000 mensajes a la cola? Tengo una configuración de perfil desarrollador para el dominio glassfish. ¿Podría ser esa la razón? ¿O hay alguna configuración de recursos que deba modificar?

Configuré las propiedades de configuración sun-resources.xml de la siguiente manera:

<?xml version=1.0 encoding=UTF-8?>
<!DOCTYPE resources PUBLIC -//Sun Microsystems, Inc.//DTD Application Server 9.0 Resource Definitions //EN http://www.sun.com/software/appserver/dtds/sun-resources_1_3.dtd>
<resources>
  <admin-object-resource
        enabled=true
        jndi-name=jms/UpdateQueue
        object-type=user
        res-adapter=jmsra
        res-type=javax.jms.Queue>
    <description/>
    <property name=Name value=UpdatePhysicalQueue/>
  </admin-object-resource>
  <connector-resource
        enabled=true jndi-name=jms/UpdateQueueFactory
        object-type=user
        pool-name=jms/UpdateQueueFactoryPool>
    <description/>
  </connector-resource>
  <connector-connection-pool
        associate-with-thread=false
        connection-creation-retry-attempts=0
        connection-creation-retry-interval-in-seconds=10
        connection-definition-name=javax.jms.QueueConnectionFactory
        connection-leak-reclaim=false
        connection-leak-timeout-in-seconds=0
        fail-all-connections=false
        idle-timeout-in-seconds=300
        is-connection-validation-required=false
        lazy-connection-association=false
        lazy-connection-enlistment=false
        match-connections=true
        max-connection-usage-count=0
        max-pool-size=32
        max-wait-time-in-millis=60000
        name=jms/UpdateFactoryPool
        pool-resize-quantity=2
        resource-adapter-name=jmsra
        steady-pool-size=8
        validate-atmost-once-period-in-seconds=0/>
</resources>

Hmm .. investigación adicional reveló lo siguiente en los registros de imq:

   [17/Nov/2009:10:27:57 CST] ERROR sendMessage: Sending message failed. Connection ID: 427038234214377984:
    com.sun.messaging.jmq.jmsserver.util.BrokerException: transaction failed: [B4303]: The maximum number of messages [1,000] that the producer can process in a single transaction (TID=427038234364096768) has been exceeded. Please either limit the # of messages per transaction or increase the imq.transaction.producer.maxNumMsgs property.

Entonces, ¿qué haría si tuviera que enviar más de 5000 mensajes a la vez?

Lo que trato de hacer es leer todos los registros en una tabla y actualizar un campo particular de cada registro en función del valor correspondiente de ese registro en una tabla heredada a la que solo he leído el acceso. Esta tabla tiene más de 10k registros en ella. A partir de ahora, estoy revisando secuencialmente cada registro en un bucle for, obteniendo el registro correspondiente de la tabla heredada, comparando los valores de campo, actualizando el registro si es necesario y agregando los registros nuevos correspondientes en otras tablas.

Sin embargo, esperaba mejorar el rendimiento procesando todos los registros de forma asincrónica. Para hacer eso, estaba pensando en enviar cada información de registro como un mensaje separado y, por lo tanto, requería tantos mensajes.

Publicado el 14/11/2009 a las 23:33
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
2

Para configurar OpenMQ y establecer propiedades de agente de artitrary, eche un vistazo a esta publicación de blog .

Pero en realidad, no aconsejaría aumentar la imq.transaction.producer.maxNumMsgspropiedad, al menos no por encima del valor recomendado en la documentación :

La cantidad máxima de mensajes que un productor puede procesar en una sola transacción. Se recomienda que el valor sea inferior a 5000 para evitar el agotamiento de los recursos.

Si necesita enviar más mensajes, considere hacerlo en varias transacciones.

Respondida el 17/11/2009 a las 18:12
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more