Tengo un MDB que escucha WebSphere MQ. No recoge los mensajes en el orden que ha recibido la cola. ¿Cómo puedo hacer que lo lea en ese orden? ¿Es posible? ¿No debería usar un MDB?¿Cómo leer mensajes en un pedido desde la cola utilizando MDB?
Respuesta
En general, WMQ entrega mensajes en el orden en que fueron recibidos. Sin embargo, varias cosas pueden afectar eso ...
- Si la cola se establece en prioridad en lugar de la entrega FIFO y los mensajes llegan en prioridades diferentes, se entregarán "fuera de servicio".
- Distinga entre pedido producido y pedido entregado. Si los mensajes se producen en un QMgr remoto y existen múltiples rutas al QMgr local, los mensajes pueden llegar a estar fuera de servicio.
- Diferencia en la persistencia: si los mensajes se producen en un QMgr remoto y tienen diferentes persistencias, los mensajes no persistentes pueden llegar más rápido que los persistentes, especialmente con el canal NPMSPEED (FAST) establecido.
- Múltiples lectores/escritores: cualquier dependencia en la secuencia implica que un solo productor envíe a un único consumidor en una sola ruta. Cualquier redundancia en los productores, consumidores o rutas entre ellos puede resultar en mensajes entregados fuera de secuencia.
- Punto de sincronización: para conservar la secuencia, TODOS los mensajes deben escribirse y consumirse en el punto de sincronización o TODO debe escribirse y consumirse fuera del punto de sincronización.
- selectores - Estos específicamente están destinados a entregar mensajes fuera de servicio con respecto al contexto de todos los mensajes en la cola.
- Grupos de mensajes: la recuperación de mensajes agrupados suele esperar hasta que todo el grupo esté presente. Si los grupos están intercalados, los mensajes se entregan fuera de secuencia.
- DLQ: si la cola de destino se llena, los mensajes se pueden entregar al DLQ. A medida que se agota la cola de destino, los mensajes comienzan a volver allí. Con una cola cerca de su capacidad, los mensajes pueden alternar entre la cola de destino y DLQ.
De modo que cuando un MDB recibe mensajes desordenados, cualquiera de estas cosas, o incluso varias de ellas en combinación, pueden estar causadas. Elimine la dependencia de la secuencia de mensajes (la mejor opción) o vuelva sobre el diseño y concilie todos los factores que pueden conducir al procesamiento fuera de secuencia.
Para agregar a la lista de T.Rob, los MDB utilizan el servidor de aplicaciones WorkManager para programar la entrega de mensajes, por lo que el orden de los mensajes también depende del orden en que WorkManager inicia los elementos de Trabajo. Esto está fuera del control de WMQ. Si limita la profundidad de MDB ServerSessionPool a uno, este límite se eliminará, ya que solo habrá una instancia de trabajo en vuelo, pero a costa de reducir el rendimiento máximo.
Si está ejecutando en el servidor de aplicaciones WebSphere, el modo no ASF con ListenerPorts puede conservar el orden de los mensajes sujeto a algunas advertencias transaccionales/de retroceso. Hay una nota técnica de soporte aquí:
- 1. Pedido dropDownList utilizando relaciones?
- 2. pensamiento de cola de mensajes
- 3. ¿Cómo leer mensajes SMS en iOS?
- 4. Editar mensajes de MSMQ en una cola
- 5. Sistema de cola de mensajes
- 6. mensajes MSMQ está atascado en la cola de salida
- 7. ¿Cola de mensajes basada en Memcache?
- 8. ¿Cómo obtener todos los mensajes en la cola de Amazon SQS utilizando la biblioteca de boto en Python?
- 9. NServiceBus: Cómo mover mensajes de la cola de errores
- 10. Pedido de la cola de eventos de Silverlight Dispatcher
- 11. ¿Compartir transacciones JMS e Hibernate en un Spring MDB utilizando Oracle Streams AQ?
- 12. Cómo purgar/eliminar mensajes de la cola weblogic JMS
- 13. Pedido API QueryOver utilizando el caso
- 14. Linux: compruebe si la cola de mensajes está vacía
- 15. Cómo enviar mensajes SMS desde un servidor
- 16. ¿Cuán profunda es la cola de mensajes de Win32?
- 17. En F #, ¿quién bombea la cola de mensajes?
- 18. Android 1.5: leer mensajes SMS
- 19. ¿Es posible crear un mono mdb desde .net pdb?
- 20. Tratando con la duplicación en una cola de mensajes
- 21. ¿Puedo enviar mensajes a una cola JMS desde fuera del servidor de la aplicación?
- 22. Pedido de mensajes basados en Wordpress categoría padre
- 23. diferencia entre la cola de mensajes y la memoria compartida?
- 24. ¿Por qué RabbitMQ no persiste mensajes en una cola duradera?
- 25. ActiveMQ: la cola de mensajes no entregados guarda la orden de mis mensajes
- 26. Colas de mensajes frente a sockets
- 27. Recuperar mensajes de la (s) cola (s) de RabbitMQ
- 28. ¿Cómo adjuntaría un buzón TChan a un hilo y recibiría/enviaría mensajes utilizando sockets?
- 29. ¿Cómo obtener una cola de mensajes POSIX única?
- 30. Uso de la extensión reactiva (Rx) para recibir mensajes MSMQ utilizando un patrón asíncrono (queue.BeginReceive, queue.EndReceive)