|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
Задача такая: В некий класс/сервис должны поступать задачи. В рамках задачи нужно работать с базой в рамках транзакции + вызовы к сторонним системам через HttpClient, в случае успеха выполнения которых нужно успешно закрывать транзакцию. При этом стоит требование об ограничении количества параллельно выполняющихся таких задач (тасков). Соответственно по задумке, при поступлении задачи должен стартовать новый Task и что-то там делать. Общее количество работающих задач я планирую ограничить через семафор. Но сложность в том, чтобы реализовать следующее: Нужно проконтролировать, что задачи при успешном И не успешном выполнении отчистят все ресурсы за собой: закроют соединение, освободят семафор, уберут ссылку на себя - чтобы не утекала память. На все время выполнения задачи ссылку на нее нужно где-то сохранять, чтобы сборщик мусора не убил, но затем эту ссылку нужно почистить. Как такое можно реализовать ? Есть ли готовые решения ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 13:08 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
Используйте TaskScheduler ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 13:10 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
точнее реализуйте свой. который будет запускать таск, с ограничением на количество, очередью выполнения и прочим, прочим, прочим ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 13:11 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
Roman Mejtesточнее реализуйте свой. который будет запускать таск, с ограничением на количество, очередью выполнения и прочим, прочим, прочим Про TaskScheduler не знал, спасибо, буду копать. А вот необходимость реализовывать "ограничением на количество, очередью выполнения и прочим, прочим, прочим" как раз смущает ) Этого я и хотел избежать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 13:13 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
WaspNewCoreЭтого я и хотел избежать тогда программиста нанимать нужно ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 14:16 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
Изопропил, Ищем, приходите на собеседование ) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 14:19 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
Насчет TaskScheduler я переборщил. Из головы вылетело про него. Обычно напрямую таски создаем через Task.Run. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 14:20 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
WaspNewCoreбазой в рамках транзакции + вызовы к сторонним системам через HttpClient,читать про РАСПРЕДЕЛЕННЫЕ транзакции. Дорогая штука. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 14:43 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
WaspNewCore, Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 14:52 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
WaspNewCoreЭтого я и хотел избежать.дык у вас в ТЗ слова Ограничения/ограничить.))) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 14:55 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
WaspNewCore, в сторону pipeline- pattern смотрел? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 15:06 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
Petro123WaspNewCoreбазой в рамках транзакции + вызовы к сторонним системам через HttpClient,читать про РАСПРЕДЕЛЕННЫЕ транзакции. Дорогая штука. Распределенные задачи не нужны ! Требуется чтобы созданный таск в рамках транзакции обрабатывал данные из бд. Запрашивал дополнительную информацию у стороннего сервиса, и успешно закрывал транзакцию после обработки. Либо падал с откатом транзакции, чтобы кто-то другой подхватил задачу и попробовал ее сделать. Основная сложность, при поступлении задач, генерить таски не больше заданного одновременного количества (думаю через семафор), а также следить за тем, чтобы таски завершаясь освобождали ресурсы - тот же семафор. Соотвественно где-то хранить список текущих тасков, защищая их от сборщика мусора, и удалять завершенные. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 15:08 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
vb_subWaspNewCore, в сторону pipeline- pattern смотрел? В первый раз слышу про него, это явно не классический от GOF. Почитаю, может придумаю как задействовать. Надеюсь это не просто producer-consumer..... Ой. Кстати. Может BlockingCollection поможет решить мою задачу, нужно подумать.. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 15:11 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
WaspNewCoreРаспределенные задачи не нужны ! Требуется чтобы созданный таск в рамках транзакции обрабатывал данные из бд. Запрашивал дополнительную информацию у стороннего сервиса, и успешно закрывал транзакциюможет в школу сходить? Распределенные не задачи, я говорил, а транзакции. Приводи пример уже что ли. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 15:23 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
WaspNewCore, Если без распределенных, то обычная очередь для того чтобы другой подхватил. Транзакция будет одна в одном блоке try. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 15:26 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
WaspNewCoreТребуется чтобы созданный таск в рамках транзакции обрабатывал данные из бд.все бд работают в рамках транзакции. Комментируй. Либо это лишние слова и ты просто читаешь из бд, и потом пишешь несколько операций одной транзакцией. Например 10 раз insert с откатом. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 15:29 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
WaspNewCoreОбщее количество работающих задач я планирую ограничить через семафор.вместо пула потоков с maxPoolingThread? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 15:32 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
Petro123, Есть тонкость, которую я забыл упомянуть. Одновременно будет работать несколько таких сервисов, по обработке задач. Работать будут в одном приложении - в разных потоках. Поэтому ограничить через общий пул потоков не выйдет. Нужны индивидуальные настройки. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 15:42 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
WaspNewCoreЕсть ли готовые решения ? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Что по ТЗ упустил? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 15:45 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
WaspNewCoreнесколько таких сервисовпереведи. Зачем? У тебя и от одного сервиса весь проц будет занят. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 15:47 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
WaspNewCoreобщий пул потоковон общий вроде на процесс ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 15:48 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
WaspNewCore, Задача равно поток. И не усложняй жизнь семафорами. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 15:50 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
WaspNewCore, зачем ограничивать общее количество работающих задач? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 15:56 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
vb_subWaspNewCore, зачем ограничивать общее количество работающих задач?+1 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 16:00 |
|
Как реализовать такую идею ? Есть ли готовые решения ?
|
|||
---|---|---|---|
#18+
Petro123, Упущено ограничение на одновременную работу не более заданного числа. Т.е. должно быть примерно так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 16:55 |
|
|
start [/forum/topic.php?fid=20&fpage=22&tid=1399031]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 173ms |
0 / 0 |