Hasta ahora lo sé, esto se conoce como entrega "fuera de orden" y es parte de los atributos de calidad de servicio (QoS) del sistema JMS. No creo que sea parte de la especificación JMS, pero algunos proveedores lo admiten tal vez. Eso dependerá de la implementación de JMS particular que use.
Sin embargo, tenga en cuenta que JMS está destinado a distribuir mensajes a varios consumidores de una manera de distribuir la carga. Si el mensaje debe entregarse de manera ordenada, esto no es posible; básicamente, conduce a la serialización de la entrega del mensaje y el mensaje no se puede procesar simultáneamente.
El wikipedia lo dice mejor que yo:
cola JMS Un área de ensayo que contiene los mensajes que se han enviado y son espera de ser leído. Tenga en cuenta que, , al contrario de lo que sugiere la cola de nombres , los mensajes no tienen que ser entregados en el orden enviado. Si el mensaje piscina bean controlado contiene más de una instancia entonces los mensajes pueden ser procesan al mismo tiempo y por lo tanto es posible que un mensaje más tarde se procesada antes de lo que una anterior. Una cola JMS garantiza solo que cada mensaje se procesa solo una vez.
La solicitud de cancelación fuera de banda no es fácil de lograr con JMS. Dos ideas:
- Almacenar un boleto que corresponde a cada mensaje en una base de datos se podría utilizar para cancelar el mensaje fácilmente. Cuando se entrega el mensaje, el MDB verifica si el ticket correspondiente sigue siendo válido. Si es así, procede más, si no, suelta el mensaje.
- Intente establecer el tamaño del grupo de MDB en uno. Quizás en este caso, la entrega será ordenada. Cambiar el tamaño de la piscina es la aplicación. específico del servidor, pero la mayoría de ellos admite tamaño de grupo por grupo de beans.
De lo contrario, eche un vistazo al patrón message store. De todos modos, vale la pena consultar el sitio web EAI.
Gracias, voy a echar un vistazo a este – user271858