Sincronismo entre os commits das transações e o consumo das filas JMS

Olá pessoal,
Tenho o seguinte cenário:

Em situações onde o Sistema realiza um processo e ao fim posta uma mensagem na JMS para realizar alguma integração, o consumo da mensagem JMS acontece primeiro do que o commit do primeiro processo que a postou na fila, isso acarreta em coisas do tipo, o primeiro processo altera o status do Pedido para 100, posta na JMS, segundo processo consome mensagem JMS, realiza integração, altera o status do pedido para 200 e comita, primeiro processo comita. Como o primeiro processo comitou por último ele sobrescreveu o status do Pedido que era para ser 200 e acabou sendo com status 100.

Já havíamos feito alterações no sistema para corrigir isso, utilizamos um mecanimos de TransactionSynchronization do Spring, mas esse parece não cumprir o contrato de commit de transações.

Alguém conhece outro mecanismo para evitar esse cenário que acontece intermitentemente?

Agradeço pela atenção.

Você está usando EJB’s / JPA ? Vou partir do acreditar que sim. Onde há este tipo de concorrencia, as vezes é necessário algum tipo de lock (http://blogs.oracle.com/carolmcdonald/entry/jpa_2_0_concurrency_and)

Se é que já não sabe, o contexto da sua transação nunca será propagado para a chamada do JMS e ela roda em uma Thread diferente (mesmo que ocorra o roolback, essa mensagem não será desfeita).