Дмитрий
хотя и можно
Vladimir
Vladimir
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
можно такие вещи попробовать решить через редис тот же самый, там есть queue тип и туда можно как раз задачи класть, а на выходе будет конретный один воркер
Дмитрий
Дмитрий
для обработки
Max
Vladimir
Я бы сделал банально на файлах
Дмитрий
ну это специфично,мне пока что такой строгой последовательности не надо пока что, но возможно нужна будет
Vladimir
Редис там не нужен
Дмитрий
Max
так в чем задача заключается?
Vladimir
При всей своей тупости это решение имеет ряд явных преимуществ
Vladimir
Во первых легко контролируется
Дмитрий
и по каким протоколам связать
Дмитрий
если это разные стеки вообще
Vladimir
Во вторых легко можно разделить по типам
Дмитрий
связать через брокер то можно
Vladimir
В третьих понятно любому языку
Дмитрий
но сами очереди кто будет обрабатывать
Дмитрий
я думал демонов повесить
Дмитрий
которые будут по тому же брокеру
Max
ну тут видите в чем прикол очередей, не важно как и где данные о сообщениях хранить, важно как они поступают в канал сообщений и как они на выходе обрабатываются
Vladimir
И еще при перезагрузке сервера - очередь сохранится
Дмитрий
общаться с основным монолитом
Max
Max
ща книгу пришлю на эту тему =) правда на англицком
Дмитрий
которые обараьывает пачки
Дмитрий
а программу на пыхе дергает через брокер
Дмитрий
где основная логика
Дмитрий
Дмитрий
но да, быстрее чем на си
Max
там пара классов нужна, чтобы это дело запустилось =)
Дмитрий
Дмитрий
openjdk?
Дмитрий
или это не то =)))
Max
либерику
Дмитрий
либерику
https://axiomjdk.ru/pages/axiom-jdk/ ?
Max
оно, да
Дмитрий
конечно это не эффективнее си
Дмитрий
но если написать и не страдать
Max
берешь значит джаву
Дмитрий
то это самое оптимальное