(Laravel работников и супервизор) Работа с N числом параллельных работников для массовой отправки сообщения - PullRequest
2 голосов
/ 19 января 2020

Я разрабатываю сервис laravel, который параллельно пересылает массовые сообщения X числу получателей. Я стал использовать N параллельных рабочих (с помощью супервизора) для обработки запроса и массовой отправки сообщений в очередь, что значительно увеличило скорость отправки сообщения. Я сделал следующее: когда очередь получает получателя, я обновил поле логического состояния этой записи получателя, чтобы заблокировать другие очереди, чтобы предотвратить обработку одновременно. Может быть, этот подход был не так хорош в конце концов .

Все работало нормально, когда я тестировал с небольшим числом получателей. Но потом, когда я увеличил количество получателей до тысячи, я увеличил количество рабочих для этого. Были случаи, когда одно и то же сообщение отправлялось несколько раз для одного и того же получателя.

Я также не могу сократить количество работников из-за задержки, которая может привести к пересылке этих сообщений. Существует ли какой-либо оптимальный способ отправки массовых сообщений без ущерба для производительности, а также предотвращения отправки сообщения одному и тому же получателю несколько раз?

...