Ordenação de Mensagens Rigorosa para Destinos de Barramento
Se a ordem de mensagens tiver que ser mantida em todas as circunstâncias, um destino pode ser configurado para que a ordem das mensagens seja preservada muito mais rigorosamente do que para um destino normal.
Em geral, as mensagens produzidas por um único produtor para um único destino são vistas por um consumidor desse destino na mesma ordem que elas são produzidas. No entanto, existem algumas topologias e eventos, como falhas do sistema, que podem alterar a ordem das mensagens (consulte Sequência da Mensagem para obter detalhes). Se a ordem de mensagens rigorosa for importante, será possível configurar um destino para preservar a ordem das mensagens de uma maneira muito mais rigorosa. A utilização de uma ordenação de mensagens rigorosa, juntamente com topologias restritas (conforme descrito nesta seção), mantém a ordem de mensagens em todas as circunstâncias.
Restrições que São Aplicadas Automaticamente
- Os consumidores simultâneos são impedidos de conectar-se a um destino ordenado. Ter mais de um consumidor consumindo de um destino pode resultar no consumo de mensagens fora de ordem. Portanto, para um destino de fila ordenado, e qualquer assinatura em um espaço de tópico ordenado, no máximo um consumidor pode conectar-se de cada vez. Isso é equivalente a configurar "recebimento exclusivo" como true em um destino de fila e "Compartilhar assinaturas duráveis" como "nunca compartilhado" em um connection factory do tópico de JMS, sendo que serão gerados avisos no log do sistema para indicar se essas opções foram substituídas. O consumidor conectado também está restrito a uma única transação a qualquer momento (este é o comportamento normal para quaisquer interfaces do sistema de mensagens, portanto, não deve afetar muitos usuários, por exemplo, JMS).
- Mensagens consumidas parcialmente impedem o consumo de mensagens subsequentes. Para destinos padrão (ou seja, destinos sem a opção de organização estrita de mensagens ativada), as mensagens que foram parcialmente consumidas a partir do destino (por exemplo, recebidas em uma transação que ainda está para ser cometida) poderão ser ignoradas por um consumidor para permitir o processamento de mensagens para continuar além das mensagens consumidas anteriormente que ainda estão para ser cometidas. Isto pode interromper a ordem de mensagens. Para um destino ordenado, tais mensagens não serão ignoradas por um consumidor, em vez disso, o consumidor ficará bloqueado até que a mensagem tenha sido totalmente removida (por exemplo, a transação não confirmada será confirmada) ou substituída (por exemplo, a transação não confirmada sofrerá rollback). Esta situação ocorrerá se um consumidor conectado anteriormente falhar ao confirmar uma transação que foi utilizada para consumir mensagens do destino ou se um recurso transacional se tornar temporariamente indisponível durante a confirmação de uma transação. Se o recurso ficar temporariamente indisponível, consulte Resolvendo Transações Indeterminadas para obter informações sobre como resolver estas transações.
- Beans Acionados por Mensagens (MDNs) simultâneos são restritos a um destino ordenado. As configurações de número máximo de terminais simultâneos e de tamanho máximo do lote de qualquer MDB implementado em um destino ordenado são substituídas para serem uma só. Para obter mais informações, consulte Especificação de Ativação JMS [Configurações]. Isto assegura o processamento ordenado de mensagens pelo MDB. Quando o sistema substitui esta propriedade no tempo de execução, é gerado um aviso no log do sistema.
- Mediações simultâneas são restritas para um destino ordenado. A configuração de mediação simultânea de qualquer mediação em um destino ordenado é substituída para ser falsa. Para obter mais informações, consulte Mediações Simultâneas. Isto assegura o processamento ordenado de mensagens pela mediação. Quando o sistema substitui esta propriedade no tempo de execução, é gerado um aviso no log do sistema.
- Se Parar terminais automaticamente em falhas repetidas de mensagens estiver ativado, então o Limite de mensagens sequencial falho será substituído por 1.
- Efeito de ativar Manter Ordem Estrita de Mensagens em um destino de tópico existente. Se a ordenação de mensagens estrita estiver ativada em um destino de tópico existente, quaisquer assinaturas duráveis existentes junto com as mensagens associadas serão invalidadas. Quando a ordenação de mensagens estrita está ativada e o ambiente é reiniciado, as assinaturas duráveis existentes são excluídas e recriadas; as mensagens que são associadas a assinaturas duráveis também são excluídas.
Restrições Adicionais que Poderão Afetar a Organização de Mensagens
- Se um destino tiver um destino de exceção configurado, será possível entregar as mensagens direcionadas para este destino no destino de exceção em condições de erro, como por exemplo, uma mensagem que atinge seu limite máximo de entrega com falha. Esse redirecionamento de mensagens pode ser considerado como uma mudança na ordem das mensagens e, nesse caso, o destino deve configurar o destino de exceção como "none". Observe que a configuração do destino de exceção como none resulta em mensagens que, de outra maneira, seriam movidas para o destino de exceção restante no destino.
- A alteração da topologia de um barramento de integração de serviço pode afetar a ordem de mensagens. Por exemplo, a exclusão e recriação de um destino ordenado devem ser vistas como dois destinos distintos e, portanto, a ordem não pode ser assegurada nos dois destinos.
- A introdução ou remoção de uma mediação pode afetar a ordem de mensagens. Se uma mediação for introduzida em um destino ou removida de um destino enquanto as mensagens estiverem fluindo para e por meio do destino, a ordem de mensagens não será necessariamente preservada.
- As mediações podem ser projetadas para afetar deliberadamente a ordem de mensagens e, portanto, a alteração de uma mediação pode afetar diretamente a ordem de mensagens. Por exemplo, você pode introduzir uma mediação que reordena mensagens ou roteia mensagens para destinos diferentes.
- Os destinos de alias e destinos externos não têm uma opção para manter a ordem de mensagens rigorosa. Em cada caso, apenas o destino subjacente pode ser ordenado.
- Se um destino de fila for implementado em um membro do barramento de cluster que tiver mais de um mecanismo do sistema de mensagens, que significa que o destino tem mais de um ponto de fila
ou ponto de mediação, a ordem de mensagens não poderá ser mantida no destino. Portanto, a ativação da ordem de mensagens rigorosa em tal destino não assegura
a ordem de mensagens. Configurar a afinidade de mensagens permite definir as mensagens que serão enviadas ao mesmo ponto de fila para processamento em ordem por um único consumidor. A afinidade de mensagens tem implicações de desempenho pois as mensagens não têm mais a carga de trabalho balanceada por vários pontos de fila.Importante: O sistema não o impede de utilizar destinos particionados. É de sua responsabilidade assegurar que os destinos particionados não sejam utilizados no sistema.
- As mensagens com uma confiabilidade de qualquer tipo diferente de persistente assegurada podem ser perdidas ou duplicadas sob determinadas condições. Para obter mais informações, consulte Níveis de Confiabilidade da Mensagem - Modo de Entrega de JMS e Qualidade da Integração de Serviço do Serviço. Se isto for considerado como uma interrupção da ordem de mensagens, apenas as mensagens persistentes asseguradas deverão ser utilizadas com um destino rigorosamente ordenado.
- A ordenação de mensagens é assegurada na prioridade de mensagem; deve ser entendido que as mensagens com uma prioridade diferente podem superar mensagens com prioridade mais baixa.
- A ordenação de mensagens é assegurada na confiabilidade de mensagem; deve ser entendido que as mensagens de uma confiabilidade podem superar mensagens de uma confiabilidade diferente.
- Embora vários consumidores não tenham permissão para conectar-se a um destino ordenado, vários produtores podem ser utilizados para enviar mensagens para destinos ordenados. A ordenação em vários produtores não é assegurada, pois as mensagens aparecem no destino na ordem que as transações de envio são confirmadas.
- O código de aplicativos poderá conter a lógica que pode interromper a organização de mensagens.