Каково реальное значение, ценность и использование возможности доставки Azure Service Bus «максимум один раз»? - PullRequest
0 голосов
/ 16 февраля 2019

В служебной шине в документации говорится, что "семантика At-Most-Once может поддерживаться с помощью состояния сеанса для хранения состояния приложения и с помощью транзакций для атомарного получения сообщений и обновления состояния сеанса".«Сеанс» здесь, по-видимому, относится к сеансам обмена сообщениями служебной шины , которые включают возможность сохранять произвольное состояние.Этот механизм позволяет регистрировать обновления состояния в транзакциях вместе с операциями над сообщениями.

Я вижу, как это можно использовать для надежного поддержания состояния приложения, использующего сеансы сообщений.Если вы можете обновить состояние приложения и завершить сообщение в той же транзакции, то правильно реализованное приложение может потенциально умереть где угодно в процессе выполнения, и при возобновлении гарантируется наследование состояния, которое приводит к успешной продолжающейся обработке сеанса по порядку (примеркод здесь , хотя, как ни странно, он на самом деле не использует транзакции , хотя я вижу, как он мог бы и что это могло бы сделать).

Чего я не делаюПосмотрите, как все это переводится как «не более одного раза» доставки.Ничто в Service Bus, включая обновления состояния сеанса, не может быть зарегистрировано в распределенной транзакции.Итак, что именно означает «максимум один раз», и что оно делает?И какая отличительная особенность служебной шины позволяет ей поддерживать доставку «максимум один раз», когда очереди хранилища Azure не ?

1 Ответ

0 голосов
/ 21 февраля 2019

Просмотрев ваш пост и прочитав документацию, я понял, что на самом деле это не объясняет at-most-once.

Так что я обратился к заинтересованной команде и подтвердил, что это действительно неверно. PR был поднят для исправления документа соответствующим образом.

Вместо этого сеансы и транзакции вместе обеспечивают более высокий уровень согласованности, который обычно называют обработкой exactly-once (которая не можетдействительно достигается только самим посредником сообщений, но вместе с получателем, способным к дедупликации).

PS: at-most-once действительно возможно, просто используя режим ReceiveAndDelete

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...