鍍金池/ 問答/Java  PHP  Python  Linux  HTML/ 如何高速高效的發(fā)布微信模版消息、客戶消息?

如何高速高效的發(fā)布微信模版消息、客戶消息?

我們平臺基于微信公眾號,總粉絲數(shù)近3千萬?,F(xiàn)在在發(fā)送模版消息、客服消息時受到限制。不知道有什么更好的解決方案。
我們目前比較屎的方案:
1、建立發(fā)送任務(wù),發(fā)送模版消息或客服消息。
2、兩張隊(duì)列表,一個模版消息隊(duì)列表,一個客服消息隊(duì)列表。當(dāng)發(fā)送任務(wù)提交后,由mysql的事件來定時將某條任務(wù)分到3千萬粉絲,模版消息任務(wù)進(jìn)模版消息隊(duì)列表,客服消息進(jìn)客服消息隊(duì)列表。
類似下面的結(jié)構(gòu)

任務(wù)ID OPENID XXX1 XXX2 XXX3 XXX4 1
34rwfrwewesefsf dd gfgg ddd ddd

也就是會產(chǎn)生3千萬條模版消息隊(duì)列表或客服消息隊(duì)列表

3、linux crontab做定時任務(wù),20分鐘執(zhí)行一次shell腳本

 shell腳本每次100到200并發(fā)調(diào)用 后臺的發(fā)送服務(wù)。每個發(fā)送服務(wù)會先批量更新500條為一組發(fā)送,這樣500個發(fā)送服務(wù)調(diào)用的數(shù)據(jù)互不干擾
 

現(xiàn)在大概20分鐘大概能發(fā)送100萬左右。本身基于數(shù)據(jù)庫,所以對數(shù)據(jù)庫壓力也大。由于發(fā)送服務(wù)是調(diào)用微信的相關(guān)接口,而500條一組都是for循環(huán)發(fā)送,所以速度上并不快。無法定時時間發(fā)送完成。往往都是進(jìn)了隊(duì)列,很久后才發(fā)送到之前的任務(wù)

有沒有更好的方案供改造

回答
編輯回答
硬扛

你可以看成隊(duì)列,就是一個商城,既然商城的貨銷售不出去,那就是證明消費(fèi)者不夠,消費(fèi)者不夠,那就增加消費(fèi)者.將隊(duì)列分批.分成多個隊(duì)列來執(zhí)行.就是多個消費(fèi)者.這樣,消費(fèi)者夠了.然后就是數(shù)據(jù)庫的問題.是否可以考慮從數(shù)據(jù)庫中脫離出來.利用redis的隊(duì)列.然后通過redis來同步數(shù)據(jù)庫.這樣是不是就減輕了數(shù)據(jù)庫的壓力.

2017年3月5日 04:36