66/**
77 * Amazon SQS wrapper
88 * @package framework
9- * @subpackage queue
9+ * @subpackage sqs
1010 */
1111class Hm_AmazonSQS {
1212
1313 /** SQS Client */
1414 private static $ sqsClient ;
1515
1616 /** Required configuration parameters */
17- static private $ required_config = ['aws_key ' , 'aws_secret ' , 'aws_region ' , ' sqs_queue_url ' ];
17+ static private $ required_config = ['aws_key ' , 'aws_secret ' , 'aws_region ' ];
1818
1919 /** SQS config */
2020 static private $ config ;
@@ -29,7 +29,7 @@ static private function parse_config($site_config) {
2929 'aws_key ' => $ site_config ->get ('aws_key ' , false ),
3030 'aws_secret ' => $ site_config ->get ('aws_secret ' , false ),
3131 'aws_region ' => $ site_config ->get ('aws_region ' , false ),
32- 'sqs_queue_url ' => $ site_config ->get ('sqs_queue_url ' , false ),
32+ 'sqs_queue ' => $ site_config ->get ('sqs_queue ' , ' default ' ),
3333 ];
3434
3535 foreach (self ::$ required_config as $ v ) {
@@ -69,22 +69,31 @@ static public function connect($site_config) {
6969 }
7070 }
7171
72+ static private function getQueueUrl (SqsClient $ client , string $ queueName ) {
73+ try {
74+ $ result = $ client ->getQueueUrl ([
75+ 'QueueName ' => $ queueName ,
76+ ]);
77+ return $ result ['QueueUrl ' ];
78+ } catch (AwsException $ e ) {
79+ Hm_Debug::add ($ e ->getMessage ());
80+ return false ;
81+ }
82+ }
83+
7284 /**
7385 * Send a message to the SQS queue
7486 * @param string $message
7587 * @return string|false Message ID or false on failure
7688 */
77- static public function sendMessage ($ message , int $ delay = 0 ) {
78- if (!self ::$ sqsClient ) {
79- return false ;
80- }
81-
89+ static public function sendMessage (SqsClient $ client , $ message , int $ delay = 0 , string $ queueName = null ) {
8290 try {
83- $ result = self :: $ sqsClient ->sendMessage ([
84- 'QueueUrl ' => self ::$ config ['sqs_queue_url ' ] ,
91+ $ result = $ client ->sendMessage ([
92+ 'QueueUrl ' => self ::getQueueUrl ( $ client , ! is_null ( $ queueName ) ? $ queueName : self :: $ config ['sqs_queue ' ]) ,
8593 'MessageBody ' => $ message ,
8694 'DelaySeconds ' => $ delay ,
8795 ]);
96+
8897 return $ result ['MessageId ' ];
8998 } catch (AwsException $ e ) {
9099 Hm_Debug::add ($ e ->getMessage ());
@@ -97,14 +106,10 @@ static public function sendMessage($message, int $delay = 0) {
97106 * @param int $maxMessages
98107 * @return array
99108 */
100- static public function receiveMessages ($ maxMessages = 1 ) {
101- if (!self ::$ sqsClient ) {
102- return [];
103- }
104-
109+ static public function receiveMessages (SqsClient $ client , $ maxMessages = 1 ) {
105110 try {
106- $ result = self :: $ sqsClient ->receiveMessage ([
107- 'QueueUrl ' => self ::$ config ['sqs_queue_url ' ] ,
111+ $ result = $ client ->receiveMessage ([
112+ 'QueueUrl ' => self ::getQueueUrl ( $ client , self :: $ config ['sqs_queue ' ]) ,
108113 'MaxNumberOfMessages ' => $ maxMessages ,
109114 'WaitTimeSeconds ' => 10 ,
110115 ]);
@@ -120,14 +125,10 @@ static public function receiveMessages($maxMessages = 1) {
120125 * @param string $receiptHandle
121126 * @return bool
122127 */
123- static public function deleteMessage ($ receiptHandle ) {
124- if (!self ::$ sqsClient ) {
125- return false ;
126- }
127-
128+ static public function deleteMessage (SqsClient $ client , $ receiptHandle ) {
128129 try {
129- self :: $ sqsClient ->deleteMessage ([
130- 'QueueUrl ' => self ::$ config ['sqs_queue_url ' ] ,
130+ $ client ->deleteMessage ([
131+ 'QueueUrl ' => self ::getQueueUrl ( $ client , self :: $ config ['sqs_queue ' ]) ,
131132 'ReceiptHandle ' => $ receiptHandle ,
132133 ]);
133134 return true ;
0 commit comments