Дмитрий
хотя и можно
Дмитрий
а что за задача?
да разные системы очередей
Max
на чистом си мне щас тяжеловато
ой да нахрен на си жопу мучать, это не тривиальная задача. Особенно если говорить про много поточность и прочие вещи
Max
да разные системы очередей
ну очереди - это не демоны нужны
Vladimir
Для очередей демон нахер не всрался
Дмитрий
ну очереди - это не демоны нужны
а вы на чем строите их?
Max
не ну там можно в пасивном режиме опрашивать очередь и потом обрабатывать пачку сообщений в разных потоках
Дмитрий
я так и подумывал
Max
https://docs.spring.io/spring-boot/docs/current/reference/html/messaging.html
Max
вот у нас в базе мессаджинг
Max
https://spring.io/projects/spring-integration а дальше интегрейшен
Дмитрий
вот у нас в базе мессаджинг
а если по простому как работает это очередь? если это очередь
Дмитрий
по какому принципу оно их обратаывает
Дмитрий
например у меня есть 1000 задач одновременно надо исполнить
Дмитрий
как оно их распределяет
Max
есть значит у тебя очередь =) в конец сообщения заходят из начала берутся. Есть значит приложения, ну или потоки в приложениях, которые принимают эти сообщения на выходе (они консьюмерами или потребителями называются). Ну вот собственно говоря сколько у тебя этих консьюмеров на выходе на очередь натравлено, столько одновременно можно задач и решать из этой очереди
Дмитрий
по типам
Max
при этом у тебя сами эти консьюмеры могут быть типа "пуллабл", т.е. это обычные воркеры, которые очередь опрашивают, а могут быть клиенты, которые на сокете висят на какой-нить реббит mq
Дмитрий
то есть распределяется по группам но группы надо в строгой последовательности
Дмитрий
внутри
Дмитрий
группы
Дмитрий
но группы сами параллельно чтобы шли
Max
а группировка очередей есть?
сама очередь обычно содержит в себе конкретный тип сообщений. Например сообщения для нотификации по почте, или по смс, или сообщения о том, что надо и смс и почту отправить
Дмитрий
а разносортные сообщения в одной пачке в строгой последовательности?
Max
то есть распределяется по группам но группы надо в строгой последовательности
это уже вопросы конкаренси или многопоточности. Тут не получится некую последовательность выполнения задач за счет очереди обеспечить, у тебя разные типы задач всегда будут асинхронны
Max
а разносортные сообщения в одной пачке в строгой последовательности?
да, в очереди всегда все в строгой последовательности, можно конечно добавить к обработке еще и проверку на конретный параметр и по нему эти сообщения сортировать
Max
но это задача уже не тривиальная, но в целом решаемая
Дмитрий
то есть следующую в очереди не запускать пока не будет резудьтат от прошлой
Max
ну вот тут и проблема, что ты по факту теряешь все преимущество асинхронной обработки сообщений
Дмитрий
а группы ассинзронны
Дмитрий
но внутри группы не должно быть гонки
Max
можно такие вещи попробовать решить через редис тот же самый, там есть queue тип и туда можно как раз задачи класть, а на выходе будет конретный один воркер
Дмитрий
для обработки
Max
Vladimir
Я бы сделал банально на файлах
Дмитрий
ну это специфично,мне пока что такой строгой последовательности не надо пока что, но возможно нужна будет
Vladimir
Редис там не нужен
Max
так в чем задача заключается?
Vladimir
При всей своей тупости это решение имеет ряд явных преимуществ
Дмитрий
так в чем задача заключается?
да я просто думаю на чем организовать очереди в прицнипе
Vladimir
Во первых легко контролируется
Дмитрий
и по каким протоколам связать
Дмитрий
если это разные стеки вообще
Vladimir
Во вторых легко можно разделить по типам
Дмитрий
связать через брокер то можно
Vladimir
В третьих понятно любому языку
Дмитрий
но сами очереди кто будет обрабатывать
Дмитрий
я думал демонов повесить
Дмитрий
которые будут по тому же брокеру
Max
ну тут видите в чем прикол очередей, не важно как и где данные о сообщениях хранить, важно как они поступают в канал сообщений и как они на выходе обрабатываются
Vladimir
И еще при перезагрузке сервера - очередь сохранится
Дмитрий
общаться с основным монолитом
Max
И еще при перезагрузке сервера - очередь сохранится
не, очередь во внешних брокерах персистентна
Max
ща книгу пришлю на эту тему =) правда на англицком
Дмитрий
не, очередь во внешних брокерах персистентна
просто вот берем вот си, пишем демона очередей на нем
Дмитрий
которые обараьывает пачки
Дмитрий
а программу на пыхе дергает через брокер
Дмитрий
где основная логика
Max
просто вот берем вот си, пишем демона очередей на нем
да джаву возьмите, там за пару часов можно все сделать
Дмитрий
но да, быстрее чем на си
Max
там пара классов нужна, чтобы это дело запустилось =)
Дмитрий
там пара классов нужна, чтобы это дело запустилось =)
а виртуальную машину какую испольузете?
Дмитрий
openjdk?
Дмитрий
или это не то =)))
Max
либерику
Дмитрий
либерику
https://axiomjdk.ru/pages/axiom-jdk/ ?
Max
оно, да
Дмитрий
конечно это не эффективнее си
Дмитрий
но если написать и не страдать
Max
берешь значит джаву
Дмитрий
то это самое оптимальное