Обновить
17
0

Пользователь

Отправить сообщение

А мне лучше таймер сна.

И если по честному, мне лучше, чтобы он не соблюдал законы РФ: цензура зло (нет, не только российская, но чем меньше, тем лучше)

Непонятно откуда столько агрессии, при игнорировании основного вопроса. Ну БД и дело ваше, удачи

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

ПС не очень понимаю как API связан с идемпотентностью. Вторая это про реализацию, можно любой тип АПИ сделать идемпонетным или любой сделать неидемпотентным.

Можете привести чуть более конкретный пример задачи/проблемы/состояния/обработчика. Т.е. конкретный юз кейс из реального мира.

Мы на single instance. Всё, что добралось до сервера, восстанавливать не нужно. У нас похожий подход при публикации с транзакциями:

  • евент пишется в БД одновременно с основной транзакцией

  • после окончания транзации, евент отправляется в activemq асинхронно

  • если отправка успешная, то евент удаляется из БД

  • если отправка не успешная, то периодически система отправляет все евенты из БД, которые там есть (и удаляет их после отправки)

Почему activemq:

  • очень простой в обслуживании и настройке

  • retry/DLQ из коробки

  • количество подписчиков более динамическое, чем в Kafka (нет привязки к partition). Можно параллельно получать несколько евентов, нет никаких оффсетов

  • для кафки я находил статьи, где говорится о потере сообщений, это прям no go для нас

Из его минусов:

  • он медленный, если говорить о десятках и сотнях тысяч сообщений в минуту

  • нельзя смотреть "лог" (то, что было в прошлом)

  • он не заточен под кластеризацию. Можно, но не очень эффективно

В нашем случае, кстати, нет промежуточного сохранения события после его получения: обработчик получает сообщение и сразу его обрабатывает. Если обработка успешна, то делается message acknowledge и оно считается доставленным. Если обработка неуспешная, то делается ретрай. На этом этапе сообщение потеряться уже не может

А, извините, эту "документацию" очень трудно читать.

В Prevent Doubling:
> Падение обработчика или отсутствие связи с ним приводит к остановке обработки лишь его задач.

из описания мне не понятно, что случится, если обработчик начал обрабатывать задачу, а потом упал. Или он начал обрабатывать задачу, и с ним пропала связь. И тут кто-то решил делать ребалансировку.

ПС я правильно понимаю, что эта чудо-БД написана вами?

Мне все ещё неизвестен

  • Перед обработкой задачи вставляется небольшая задержка на синхронизацию базы.

  • Падение обработчика приводит к его перезапуску и продолжению обработки задачи.

  • Если задача не обработана за определённый срок, то любой обработчик может её перехватить на себя

Второй пункт это и есть at least once. Если обработчик повторяет процедуру, это значит, что он взял задачу дважды. Если обработчик умный и умеет продолжать выполнение, а не начинать с нуля, это особенности его реализации.

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

Отличная статья, спасибо! Мы делаем нечто похожее, только с activemq

Я только одного момента не понял, когда слушатель получает событие, он сохраняет его в монго? А дальше что с ним происходит?

И как вообще выглядит событие у вас? Если нетрудно, можете дать конкретный пример названия и обработчика.

Извините за занудство, но на вики Тык пример очень похож на документы которые я скинул. Как и определение "вносить в официальный документ".

Я подозреваю, что вы имели ввиду "запротоколированные". Таких, надеюсь, нет.

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

Минусы не мои, именно потому что вы просто спросили, а не утверждали.

Агрессия моя, прошу прощения, если несправедливо обидел. Просто сложилось несколько факторов, которые вызвали у меня соответственную реакцию:

  • Обычно в такой форме задают вопрос всякие "патриоты"

  • Поскольку я довольно активно слежу/изучаю то, что происходит, для меня кажется очевидным, что такие вещи прям на виду. Но по себе людей не судят: те кто не следит за повесткой, откуда бы им знать о таких документах. Так что тут я не прав

  • На самом деле ответ на ваш вопрос очень легко гуглится

Блин, извините, я не распознал в ваших предыдущих комментариях сарказм

Модальная это очень сильное склонение к средней/медианной между Москвой и Питером, если учитывать "частоту вакансий".

Но даже 80к это не в несколько раз выше.

Ну что и требовалось доказать, медианная зп 60к, как автор выше и написал.

Даже среднее не "в несколько раз выше", как вы писали.

И это ещё с учётом того, что в статистику включена Москва.

Т.е. ваш тезис не то, что в отличии от СССР у инженеров зарплата высокая (где 120 рублей было чуть ли не минимум), а то, что у некоторых инженеров, зарплата высокая. Тут трудно поспорить. При капитализме, всегда есть те, кто зарабатывает (сильно) выше среднего, но это не становится правилом.

Глубинка это все, что не Москва и может быть Питер?

Для меня медицина выглядит упадочной, я из Самары. Но если называть Самару, город миллионник, глубинкой, то в какую категорию попадают города <50к жителей и сёла?

Я не говорил "бы".

Если вас не смущает в этой истории:

  • Предотвращение

  • Оперативность

  • Задержание не полицией, а группой непонятных мужиков

  • Пытки

    И вы считаете это нормой, то да, абсолютно никакого упадка.

Населению доступна периодическая бесплатная диспансеризация

Что?

Да не, ничего.

Задержание террористов

Что

https://t.me/rybar/58455

См видео допроса. У полиции новая форма и протоколы задержания?

И да, задержание было спустя несколько часов после трагедии. А так они спокойно смогли выйти и уехать и долго долго по дороге, ехать прыгать и бежать.

Этот пост прям очень похож на сарказм. Или я жил не в той России.

Вот вам про качество медицины. https://habr.com/ru/articles/778994/

У меня и моих знакомых полно случаев в России, когда ничего не выявили. Не диспансеризация конечно, кроме пары случаев пребывания в больнице.

Некому что ли митинг разогнать

Вот это и называется упадком, когда кому митинг разогнать есть (нарушая конституцию), а вот поймать террористов до/во время/после крокуса некому.

ПС хватит называть медицину и образование бесплатным. Народ за него платит налогами

Первая попавшаяся ссылка:

https://www.google.com/amp/s/newizv.ru/news/2023-01-25/vne-konkurentsii-skolko-poluchayut-rabotniki-voennyh-zavodov-u-nas-i-u-nih-394949%3famp=1

Можно лучше у вас узнать, откуда статистика, что инженеры получают в несколько раз выше, чем 50к? Не частный случай конкретных предприятий, а именно статистика по России.

Про престижность я вообще молчу. Прям отовсюду слышу, "войти на завод"

Понял, критика не к вам, извините :)

Особенно порадовало, что решение от Thorben Janssen им не подошло, т.к.

The implementation proposed by Thorben Janssen returns the same hash code for all objects! This approach makes hashCode() completely meaningless.

А вот возвращать один и тот же hashCode для обьектов одного и того же класса вполне норм. Это другое

@Override public final int hashCode() {

return getEffectiveClass(this).hashCode();

}

Выглядит сурово. У всех ентити одного типа будет один и тот же хешкод?

Информация

В рейтинге
Не участвует
Откуда
München, Bayern, Германия
Дата рождения
Зарегистрирован
Активность