讓我們假設,我有一個SMTP服務器,我可以每分鐘發送60封電子郵件(每秒1個)。管理每個用戶的Beanstalkd隊列
如果我有60個用戶希望通過此SMTP服務器發送電子郵件,他們都向我發送了60封電子郵件。
如果我在Laravel中維護1個隊列,則來自#1用戶的所有60封電子郵件將首先被髮送,然後來自用戶#2的所有60封電子郵件將被髮送,等等。用戶#60在開始之前必須等待3,540封電子郵件發送。
我想使用Beanstalkd循環的基礎上,我能想到這樣做的唯一途徑,是保持60管,每一個用戶,但是這需要我跑:
我這裏面臨的問題是,如果用戶#61的跡象了,他管不會被監聽,直到我創建了一個新的命令,像這樣拿起:
php artisan queue:listen --queue=user1,user2,user3,etc,user60,user61
如果我成長到100萬個用戶,有100萬支管是可取的嗎?
是否有任何簡單的方法可以讓Beanstalkd每管取一個工作,因爲這些管可以在飛行中創建,我永遠不會知道我有多少管?
我面臨的問題是,我在SMTP服務器上有一個瓶頸,所以我需要以循環方式發送這些電子郵件。我可以使用MySQL和Cron Jobs輕鬆實現這一點,但是在使用MySQL作爲排隊系統時,這導致了過去的電子郵件重複。
http://stackoverflow.com/a/23151640/6216可能會幫助很多 – 2014-12-13 09:51:46
可能重複[我應該如何讀取多個隊列,按用戶和優先級按比例?](http://stackoverflow.com/questions/23123052 /如何,應該-I-讀多隊列,按比例通過用戶和優先級) – 2015-08-08 21:33:48