Ordenação de mensagens estritas com o provedor de sistema de mensagens do IBM MQ e aplicativos Message-Driven Bean (MDB)
A ordem de mensagens é importante para alguns aplicativos do sistema de mensagens assíncronas; ou seja, é importante para processar mensagens na mesma ordem que o produtor as envia. Se esse tipo de organização de mensagens for importante para o aplicativo, o projeto deverá levar isso em consideração.
Por exemplo, um aplicativo do sistema de mensagens que processa reservas de assentos pode ter componentes do produtor e um componente do consumidor. Um componente do produtor envia uma mensagem para o componente do consumidor quando um cliente reserva um assento. Se o cliente cancelar a reserva, então o produtor (ou possivelmente um produtor diferente) envia uma segunda mensagem. Normalmente, o componente do consumidor deve processar a primeira mensagem (que reserva o assento) antes de processar a segunda (que cancela a reserva).
Alguns aplicativos usam um padrão (pedido-resposta) síncrono, no qual o produtor aguarda por uma resposta para cada mensagem antes de enviar a mensagem seguinte. Nesse tipo de aplicativo, o consumidor controla a ordem na qual ele recebe as mensagens e pode garantir que essa seja a mesma ordem em que o produtor ou os produtores as enviaram. Outros aplicativos usam o padrão (do tipo fire and forget) assíncrono, no qual o produtor envia mensagens sem aguardar respostas. Mesmo para esse tipo de aplicativo, a ordem é geralmente preservada, ou seja, um consumidor pode esperar receber mensagens na mesma ordem em que o produtor ou os produtores as envia, especialmente quando há um tempo expressivo entre o envio de mensagens consecutivas. Entretanto, o projeto deve levar em consideração fatores que podem interromper essa ordem.
A ordem das mensagens será quebrada se seu aplicativo enviar mensagens com prioridades diferentes (mensagens de prioridade alta podem se sobrepor às mensagens de prioridade inferior) ou se seu aplicativo receber explicitamente uma mensagem diferente da primeira especificando os seletores de mensagem. O processamento paralelo e o processamento de erro ou de exceção também podem afetar a ordem da mensagem.