Здравствуйте, binks, Вы писали:
B>Возникла необходимость реализовать шину сообщений. B>Предполагается следующий стандартный сценарий использования: B>1. Клиент делает запрос. В ответ получает идентификатор созданной задачи. Далее делает запросы по идентификатору запроса, чтобы узнать его статус, при завершении задачи получает ответ. B>2. Шина получает запрос и создаёт задачу. Если есть тот кто обработает этот тип задачи, то ему передаётся эта задача. B>3. Обработчик задачи формирует ответ при успешном завершении задачи или при ошибке. Размер данных в ответе относительно небольшой,
Не очень ясно что тут сообщение. Шина это просто штука для передачи сообщений.
Клиент делает запрос: кладёт сообщение в шину в определённый топик запросов. Обработчик запроса получает сообщение, делает вычисление, создаёт сообщение-ответ и кладёт в топик ответов. Клиент получает ответ. Что за "узнать статус"?
B>наверное до сотни килобайт (но что там будет дальше не знаю, может гораздо больше).
Обычно сообщения подразумеваются мелкие, до килобайта. Если больше — делают что-то вроде аттачей: большой результат кладётся в какой-нибудь сторадж, отправляется мелкое сообщение с указанием откуда взять результат.
B>Что можно почитать по этому поводу?
Доки по какой-нибудь кафке. Гарантии доставки — at-least-once, at-most-once. Партицирование. Идемпотентность. Проблема двух генералов. correlation id. Event Sourcing.
В общем не знаю, много чего тут. Конкретные вопросы лучше задавай.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай