Автоматическая коммуникация с сервисом. Запрос/Ответ с задержкой.
От: SeLo  
Дата: 27.11.19 15:23
Оценка:
Вопрос по архитектуре. Есть приложение, которое должно автоматически публиковать, обновлять и удалять свои данные в некотором веб-сервисе через его API. Другими словами, есть база данных, в которой хранятся определенные записи. Если эти записи получают определенные сосотояния, они должны быть опубликованны на вебсервисе. Если они уже были опубликованные, то обновленны. Если запись получает состояние, не удовлетворяющее условию для публикации и запись была опубликованна, то нужно ее на вебсервисе удалить. Другими словами есть 3 операции – создать, обновить и удалить какую то запись. Основная проблема заключается в том, что запросы и ответы с сервиса обрабатываются с большой временной задержкой. Т.е. я посылаю сообщение «опубликовать», могу через 1 час получить ответ – опубликован. Ответы нужно самому забирать (скачивать) с этого сервиса. Или например, нужно обновить запись, а через час ответ – нет такой записи, ошибка.

В общем мне нужно наладить надежную автоматическую коммуникацию с этим веб сервисом. Как это можно лучше всего реализовать?
Re: Автоматическая коммуникация с сервисом. Запрос/Ответ с задержкой.
От: Qulac Россия  
Дата: 27.11.19 16:39
Оценка:
Здравствуйте, SeLo, Вы писали:

SL>Вопрос по архитектуре. Есть приложение, которое должно автоматически публиковать, обновлять и удалять свои данные в некотором веб-сервисе через его API. Другими словами, есть база данных, в которой хранятся определенные записи. Если эти записи получают определенные сосотояния, они должны быть опубликованны на вебсервисе. Если они уже были опубликованные, то обновленны. Если запись получает состояние, не удовлетворяющее условию для публикации и запись была опубликованна, то нужно ее на вебсервисе удалить. Другими словами есть 3 операции – создать, обновить и удалить какую то запись. Основная проблема заключается в том, что запросы и ответы с сервиса обрабатываются с большой временной задержкой. Т.е. я посылаю сообщение «опубликовать», могу через 1 час получить ответ – опубликован. Ответы нужно самому забирать (скачивать) с этого сервиса. Или например, нужно обновить запись, а через час ответ – нет такой записи, ошибка.


SL>В общем мне нужно наладить надежную автоматическую коммуникацию с этим веб сервисом. Как это можно лучше всего реализовать?


Хранить в бд статус записи не сервере, периодически опрашивать сервер для обновления статуса записей.
Программа – это мысли спрессованные в код
Re[2]: Автоматическая коммуникация с сервисом. Запрос/Ответ с задержкой.
От: SeLo  
Дата: 27.11.19 16:51
Оценка:
Здравствуйте, Qulac, Вы писали:

Q>Здравствуйте, SeLo, Вы писали:


SL>>Вопрос по архитектуре. Есть приложение, которое должно автоматически публиковать, обновлять и удалять свои данные в некотором веб-сервисе через его API. Другими словами, есть база данных, в которой хранятся определенные записи. Если эти записи получают определенные сосотояния, они должны быть опубликованны на вебсервисе. Если они уже были опубликованные, то обновленны. Если запись получает состояние, не удовлетворяющее условию для публикации и запись была опубликованна, то нужно ее на вебсервисе удалить. Другими словами есть 3 операции – создать, обновить и удалить какую то запись. Основная проблема заключается в том, что запросы и ответы с сервиса обрабатываются с большой временной задержкой. Т.е. я посылаю сообщение «опубликовать», могу через 1 час получить ответ – опубликован. Ответы нужно самому забирать (скачивать) с этого сервиса. Или например, нужно обновить запись, а через час ответ – нет такой записи, ошибка.


SL>>В общем мне нужно наладить надежную автоматическую коммуникацию с этим веб сервисом. Как это можно лучше всего реализовать?


Q>Хранить в бд статус записи не сервере, периодически опрашивать сервер для обновления статуса записей.



Спасибо. Подумал, проиграл ситуации и решил сделать так: в базе в одной специальной таблице я буду хранить статусы в трех полях: 1 — статус в базе, должна ли быть запись опубликована или нет; 2 — статус на сервисе, опубликована ли запись или нет (запись делается, когда считывается информация с сервиса). 3 — статус проводимой операции. Т.е. статус в третьем поле указыает о том, что происходит обмен данными.
Как мне кажется, оперируя этими полями (ну и еще парочкой дригих, например, что бы хранить информацию о том, когда начался обмен, для timeout) можно реализовать то, что я хочу.
Буду пробовать. Вопрос закрыт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.