История изменений
Исправление ya-betmen, (текущая версия) :
Тебе нужны либо распределённые транзакции (но сразу придумавай как всё чинить когда оно взорвется), либо рассматривай очередь как ненадежный способ доставки. Т.е. вот есть у тебя объект А, который нужно отправить куда-то в очередь, там его съедят и сделают из него объект Б. А и Б ты хранишь в базе. У А есть статус доставки. Берешь А, отправляешь, получаешь с другой стороны, превращаешь в Б, Б пишешь в базу. Если всё ок - отпраляешь ответ и сохраняешь статус для А, что всё ок. При этом Б должны проверяться на уникальность. Соответственно если Б не записалось - реплеишь отправку А. Если почему-то статус не доехал, то дубль Б дропнется и тоже всё ок.
Исходная версия ya-betmen, :
Тебе нужны либо распределённые транзакции (но сразу придумавай как всё чинить когда оно взорвется), либо рассматривай очередь как ненадежный способ доставки. Т.е. вот есть у тебя объект А, который нужно отправить куда-то в очередь, там его съедят и сделают из него объект Б. А и Б ты хранишь в базе. У А есть статус доставки. Берешь А, отправляешь, получаешь с другой стороны, превращаешь в Б, Б пишешь в базу. Если всё ок - отпраляешь ответ и сохраняешь статус для А, что всё ок. При этом Б должны проверяться на уникальность. Соответственно если Б не записалось - реплеишь отпраку А. Если почему-то статус не доехал, то дубль Б дропнется и тоже всё ок.