Доставка как минимум один раз с использованием Akka Persistance и шаблона Extra-Cameo

Я разрабатываю приложение, использующее Akka, в котором актеры предназначены для того, чтобы избегать паттерна "запрос-ответ". Использование шаблона "Extra" или "Cameo" позволяет моделировать взаимодействия между актерами в виде "потока" сообщений.

На рисунке ниже представлена ​​архитектура таких участников.

Actorbase модель связи

Шаблон Cameo реализован для обработки ответов, поступающих от SK актеры.

Теперь представьте, что я хочу гарантировать, по крайней мере, один раз SF а также SK актеры. Как я могу это сделать? Реализация семантики с использованием постоянства Akka требует реализации шаблона запрос-ответ между этими субъектами.

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

большое спасибо

1 ответ

Решение

Джейми Аллен помогает мне в Твиттере ответить на этот вопрос. Разговор в твиттере таков.

Я пытаюсь подвести итог дискуссии, что сказал Джейми.

Для надежности, по крайней мере, один раз, использование Akka Cluster и Persistence для достижения этой цели возможно, но, вероятно, излишне. Я говорю, постарайся сделать это простым. Иметь GUID для запроса и отправить его вместе с запросом в три SK.

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

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

Таким образом, в этом случае лучшим решением будет полное удаление Akka Persistence и сведение проблемы к старой доброй передаче сообщений.

SF отправляет сообщения SK актеры, узел Камея ждет SK ответы. Если такие реакции не приходят в заранее установленное время, узел Камея предупреждает SF используя сообщение о тайм-ауте. SF снова отправляет сообщения актерам SK.

Диаграмма, которая представляет вышеуказанное решение, является следующей.

Камея с домашней доставкой, по крайней мере, один раз

Сообщение красного цвета, помеченное цифрой 5, моделирует сообщение об истечении времени ожидания.

Как сказал Джейми:

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

Надеюсь, поможет.

Другие вопросы по тегам