Jms kolejność wykonywania zadań

0

Witam

W projekcie mam dodawanie użytkownika do systemu, typowa prosta sprawa. Dodatkowo podczas tej operacji ma być wykonywane dodawanie użytkownika do zewnętrznego systemu. Wszystko to jest zaimplementowane w oparciu o kolejkę JMS.

Kolejka działa na takiej zasadzie , że wykonuje zapytanie do zewnętrznego serwisu, w sytuacji gdy wykonanie się nie powiedzie, zapisuje informacje o błędzie w tabeli, a następnie powtarza próbę 3 razy. Jeśli po 3 razie wywołanie zwróci błąd, wtedy wiadomośc trafia do kolejki DLQ i tam wiadomość zostaje zalogowana.
Wszystko działa bardzo dobrze, pojawia się tylko problem z implementacją aktualizacji rekordu (update)

Inaczej mówiąc, może zdarzyć się sytuacja gdzie w kolejce będzie istniała wiadomość typu 'update' oraz wiadomość 'create', gdzie update będzie się chciało wykonać przed create.
Jak sobie poradzić z taką sytuacją ? Jakieś pomysły ?

Ustawienie mojej kolejki (hornetQ) :

                <address-settings>
                    <address-setting match="jms.queue.#">
                        <dead-letter-address>jms.queue.dlq.dev.AsyncTaskDLQueue</dead-letter-address>
                        <redelivery-delay>60000</redelivery-delay>
                        <max-delivery-attempts>3</max-delivery-attempts>
                    </address-setting>
                </address-settings>
0

Ale kiedy niby taka sytuacja może sie zdarzyć? Przecież kolejka to FIFO. Możesz też zawsze mieć dwie kolejki i opróżniać "create" jako pierwszą. Ale to żadne rozwiązanie bo przecież równie dobrze może tak być, że łykniejsz update z kolejki zanim create w ogóle się w niej znajdzie...

1 użytkowników online, w tym zalogowanych: 0, gości: 1