Помню когда читал доки по RabbitMQ, там рекомендовалось строить обмены таким образом, чтоб повторно принятое сообщение не приводило к некорректному поведению. Как это реализуется, вопрос другой. Главный вопрос, термин, который говорит о таком свойстве обмена или данных.
PS. Точно помню, что не приснилось, но из головы вылетело. Перечитал доку на сайте, но так и не нашел. Возможно это было в какой-то другой доке или статье, коих немало читано.
Здравствуйте, cruse, Вы писали:
C>Помню когда читал доки по RabbitMQ, там рекомендовалось строить обмены таким образом, чтоб повторно принятое сообщение не приводило к некорректному поведению. Как это реализуется, вопрос другой. Главный вопрос, термин, который говорит о таком свойстве обмена или данных.
C>PS. Точно помню, что не приснилось, но из головы вылетело. Перечитал доку на сайте, но так и не нашел. Возможно это было в какой-то другой доке или статье, коих немало читано.
Здравствуйте, jazzer, Вы писали:
SH>>идемпотентность J>вау J>всегда говорил "игнорирование дубликатов" и все меня всегда понимали
это не совсем одно и то-же.
игнорирование дубликатов это скорее реализация.
Здравствуйте, jazzer, Вы писали:
SH>>идемпотентность J>вау J>всегда говорил "игнорирование дубликатов" и все меня всегда понимали
это не совсем одно и то-же.
игнорирование дубликатов это скорее реализация.
Здравствуйте, cvetkov, Вы писали:
C>Здравствуйте, jazzer, Вы писали:
SH>>>идемпотентность J>>вау J>>всегда говорил "игнорирование дубликатов" и все меня всегда понимали C>это не совсем одно и то-же. C>игнорирование дубликатов это скорее реализация.
Да, реализация/применение. На той же вики приводиться пример GET запросов к http серверу. Пока ресурс не изменился, по спецификации, результат один и тот же, соответственно можно кэшировать.
Здравствуйте, cruse, Вы писали:
C>Да, реализация/применение. На той же вики приводиться пример GET запросов к http серверу. Пока ресурс не изменился, по спецификации, результат один и тот же, соответственно можно кэшировать.
Нет. Get — это safe запрос, т.е. у него не должно быть побочных эффектов. У идемпотентного метода побочные эффекты могут быть, но повторное исполнение не меняет уже достигнутый результат.
Читать http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
D>>главное, с нильпотентностью не перепутай, а то похеришь все нафиг
C>Попытался понять суть этого свойства, не получилось. Старость — не радость
это задумывалось как искрометная шутка, от которой к этому времени я ожидал не менее десятка смайликов чистой прибыли
идемпотентность это термин из алгебры, означающий свойство элементов, удовлетворяющих условию a*a=a
Традиционны и интересны случаи, когда этими элементами являются преобразования, а операцией * -- композиция преобразований.
То есть идемпотентные преобразования это те, двухкратное применение которых не отличается от однократного применения.
Если у нас есть сервер, то каждому приходящему сообщению соответствует преобразование на множестве состояний сервера.
Соответственно, сервер обладает свойством идемпотентности, когда любое такое преобразование идемпотентно.
Нильпотентность это свойство a*a*...*a=0
Где ноль это нулевое преобразование, которое все уничтожает.
Здравствуйте, cruse, Вы писали:
D>>главное, с нильпотентностью не перепутай, а то похеришь все нафиг C>Попытался понять суть этого свойства, не получилось. Старость — не радость
Нильпотентное преобразование, применённое некоторое конечное число раз обращает всё в 0. Например, покоординатный сдвиг обладает этим свойством:
A: (a, b, c, d) -> (0, a, b, c)
A*A : (a, b, c, d) -> (0, 0, a, b)
A*A*A : (a, b, c, d) -> (0, 0, 0, a)
A*A*A*A : (a, b, c, d) -> (0, 0, 0, 0)
то есть A*A*A*A = 0
Здравствуйте, Sinclair, Вы писали:
S>Нет. Get — это safe запрос, т.е. у него не должно быть побочных эффектов. У идемпотентного метода побочные эффекты могут быть, но повторное исполнение не меняет уже достигнутый результат. S>Читать http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
Эээ, ладно, пример в вики скользкий.
PS. Слово "должно" у тебя что означает? Не имеет, Не рекомендуется..
Здравствуйте, cruse, Вы писали:
S>>Читать http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html C>Эээ, ладно, пример в вики скользкий. C>PS. Слово "должно" у тебя что означает? Не имеет, Не рекомендуется..
Означает, что пользователь (user-agent) имеет право полагаться на то, что побочных эффектов нет.
То есть, сервер, конечно же, может применять различные побочные эффекты в ответ на safe-запрос (например, подсчёт статистики), но не стоит делать там ничего существенного. Подробнее эта концепция описана в документе, на который я сослался.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, cruse, Вы писали:
S>То есть, сервер, конечно же, может применять различные побочные эффекты в ответ на safe-запрос (например, подсчёт статистики), но не стоит делать там ничего существенного. Подробнее эта концепция описана в документе, на который я сослался.
Вот-вот, should not — не стоит. Просто слово должен, мне не понятно в принципе.
Статью я конечно же прочитал.