Size: a a a

2019 December 17

AM

Artem Malahov in Laravel Pro
Коллеги, доброго времени суток.
Подскажите как вы решаете у себя проблему использования очередей внутри транзакций?
Пока я нашел только https://github.com/therezor/laravel-transactional-jobs
Но может вы посоветуете что-то иное?
источник

AM

Artem Malahov in Laravel Pro
замечательно. а если над нами есть еще транзакция? а если мы не контролируем генерацию ивентов внутри кода транзакции?
источник

AM

Artem Malahov in Laravel Pro
спасибо за ответ, правда про push/flush я вас не понял. возможно мои знания ограничены. буду благодарен если ткнете меня в доку
источник

AM

Artem Malahov in Laravel Pro
насчет "не айс" я полностью согласен. но вот тупой кейс: есть стороннее решение. laravel-medialibrary. она на событийке. она создает изображения при сейве модели.
ок если просто создание модели. не ок если у нас транзакция. совсем не ок если еще и сверху транзакция о которой мы не знаем...
ну и кейсов на самом деле много, это только один. вот пытаюсь подобрать себе решение
источник

AM

Artem Malahov in Laravel Pro
спасибо за наводку, обязательно подумаю как их использовать
источник

AM

Artem Malahov in Laravel Pro
мы можем сколько угодно не любить, но наше мнение не всегда имеет значение)
источник

IA

Ivan Atroshchenko in Laravel Pro
Artem Malahov
Коллеги, доброго времени суток.
Подскажите как вы решаете у себя проблему использования очередей внутри транзакций?
Пока я нашел только https://github.com/therezor/laravel-transactional-jobs
Но может вы посоветуете что-то иное?
Интересный вопрос. А в чем проблема?
источник

IA

Ivan Atroshchenko in Laravel Pro
Artem Malahov
замечательно. а если над нами есть еще транзакция? а если мы не контролируем генерацию ивентов внутри кода транзакции?
Можно пример?
источник

IA

Ivan Atroshchenko in Laravel Pro
Когда мы не контролируем
источник

AM

Artem Malahov in Laravel Pro
ну например вы стартуете транзакцию. создаете в ней запись в базе. внутри транзакции она есть. вне транзакции ее еще нет. кидаете на нее событие. событие рядом хватает воркер. видит что записи нет, отваливается. вы комите вашу транзакцию.
ожидание: запись в базе, событие исполнено
реальность: запись в базе, событие не исполнено
—-
или аналогично только с rollback'ом например.
источник

AM

Artem Malahov in Laravel Pro
Ivan Atroshchenko
Когда мы не контролируем
выше medialibrary. не наш код. зарыт глубоко. не контролируем. либо нам может прийти Closure из вне, который в себе генерит транзакции. второй пример конечно "притянутый", но вполне возможный
источник

SA

Shere Ali in Laravel Pro
Hello guys, I need a vps server. could you plz recommend me best vps server for asia zone?
источник

IA

Ivan Atroshchenko in Laravel Pro
Artem Malahov
ну например вы стартуете транзакцию. создаете в ней запись в базе. внутри транзакции она есть. вне транзакции ее еще нет. кидаете на нее событие. событие рядом хватает воркер. видит что записи нет, отваливается. вы комите вашу транзакцию.
ожидание: запись в базе, событие исполнено
реальность: запись в базе, событие не исполнено
—-
или аналогично только с rollback'ом например.
Я бы не кидал событие на то чего нет)
источник

AM

Artem Malahov in Laravel Pro
спасибо. но мы же понимаем что это совсем не решение) ну и rollback тут мимо совсем
источник

IA

Ivan Atroshchenko in Laravel Pro
Дилей не дело) надо что-то нормальное
источник

AM

Artem Malahov in Laravel Pro
Ivan Atroshchenko
Я бы не кидал событие на то чего нет)
да. но когда вы делаете $model->save() вы насколько уверены что там уже "то что есть". где гарантия что вызвавший вас метод не обернул вас в транзакцию?
источник

IA

Ivan Atroshchenko in Laravel Pro
Лучше отложить события куда-то и запустить по окончании транзакции
источник

AM

Artem Malahov in Laravel Pro
да, в эту сторону и копаю. думал мб кто уже сталкивался и есть что-то готовое, мб меня гугл забанил. но видимо нет, придется руками все делать (((
источник

IA

Ivan Atroshchenko in Laravel Pro
Да должно чета быть
источник

AM

Artem Malahov in Laravel Pro
ну в топик-старте есть решение. но какое-то оно подозрительное. хотя сознаюсь - исходники я еще не копал
источник