2017-04-15 57 views
1

我有一個Laravel應用程序(iOS API),它將數據推送到SQS以在後臺處理。根據要求,我們需要派遣1到4個工作崗位到SQS。例如:Laravel和SQS - 一個請求中的多個連接

派遣工作,SQS,要由工作人員進行處理:

  • 用於連接到插座服務(推)
  • 用於連接到蘋果的APNS服務(推送通知)
  • 用於將數據發送到Loggly基本集中請求記錄
  • 用於存儲在SQL數據庫中分析數據(暫時)

的問題是,我們可能有一個像「聊天」,也就是隻要服務器處理而言相當光請求的功能,但是它需要三次以上連接到SQS派:

  • 1 )插座推到所有設備
  • 2)分析處理
  • 3)集中請求/錯誤記錄

總的來說,這些連接最終兩倍或三倍的該請求中的其餘部分所花費的時間。即。發帖/chat否則可能需要大約40-50ms,但SQS,它需要更多的像100 - 120毫秒

我應該有不同的處理這個?有沒有辦法將這些批量加入到SQS中,因此我們只需要連接一次而不是三次?

+0

你的意思是像一個[SendMessageBatchRequest](http://docs.aws.amazon.com/AWSiOSSDK/latest/Classes/AWSSQSSendMessageBatchRequest.html)?您可以在單個請求中發送多達10條消息,只要它們的組合長度<= 256 KiB即可。 –

回答

1

正如Michael在評論中所建議的,一種方法是使用sendMessageBatch請求發送多達10條消息到單個隊列。當你使用多個隊列時,甚至可能不是,還有另一種方法。

如果您可以將所有不同的消息作爲相同的元素處理,即向任意接收者發送操作通知,則會發現自己處於扇出模式。這是一個常用的模式,其中多個接收者需要對單個消息採取行動,即單個動作。

儘管AWS SQS本身不支持它,但與AWS Simple Notification Service結合使用可以實現同樣的目標。 Jeff Barr在前一段時間(2012年)使用SNS和SQS在扇出設置中寫了一個short blog post。它歸結爲向SNS發送通知,將觸發消息發佈到多個SQS隊列中。