@@ -48,7 +48,8 @@ private function getClass($queue = null): string
48
48
return Config::get ('sqs-queue-reader.default-handler ' );
49
49
}
50
50
51
- $ queue = end (explode ('/ ' , $ queue ));
51
+ $ queueArray = explode ('/ ' , $ queue );
52
+ $ queue = end ($ queueArray );
52
53
53
54
return (array_key_exists ($ queue , Config::get ('sqs-queue-reader.handlers ' )))
54
55
? Config::get ('sqs-queue-reader.handlers ' )[$ queue ]
@@ -64,12 +65,15 @@ private function getClass($queue = null): string
64
65
public function pop ($ queue = null )
65
66
{
66
67
$ queue = $ this ->getQueue ($ queue );
68
+ $ count = (array_key_exists ($ queue , Config::get ('sqs-queue-reader.handlers ' )))
69
+ ? Config::get ('sqs-queue-reader.handlers ' )[$ queue ]['count ' ]
70
+ : Config::get ('sqs-queue-reader.default-handler ' )['count ' ];
67
71
68
72
try {
69
73
$ response = $ this ->sqs ->receiveMessage ([
70
74
'QueueUrl ' => $ queue ,
71
75
'AttributeNames ' => ['ApproximateReceiveCount ' ],
72
- 'MaxNumberOfMessages ' => 5 ,
76
+ 'MaxNumberOfMessages ' => $ count ,
73
77
'MessageAttributeNames ' => ['All ' ],
74
78
]);
75
79
@@ -82,7 +86,11 @@ public function pop($queue = null)
82
86
? $ this ->container ['config ' ]->get ('sqs-queue-reader.handlers ' )[$ queueId ]
83
87
: $ this ->container ['config ' ]->get ('sqs-queue-reader.default-handler ' );
84
88
85
- $ response = $ this ->modifyPayload ($ response ['Messages ' ], $ class );
89
+ if ($ count === 1 ) {
90
+ $ response = $ this ->modifySinglePayload ($ response ['Messages ' ][0 ], $ class );
91
+ } else {
92
+ $ response = $ this ->modifyMultiplePayload ($ response ['Messages ' ], $ class );
93
+ }
86
94
Log::debug ('New $responseV2== ' , [$ response ]);
87
95
88
96
return new SqsJob ($ this ->container , $ this ->sqs , $ response , $ this ->connectionName , $ queue );
@@ -99,7 +107,30 @@ public function pop($queue = null)
99
107
* @param string $class
100
108
* @return array
101
109
*/
102
- private function modifyPayload ($ payload , $ class )
110
+ private function modifySinglePayload ($ payload , $ class )
111
+ {
112
+ if (! is_array ($ payload )) {
113
+ $ payload = json_decode ($ payload , true );
114
+ }
115
+
116
+ $ body = json_decode ($ payload ['Body ' ], true );
117
+
118
+ $ body = [
119
+ 'job ' => $ class . '@handle ' ,
120
+ 'data ' => isset ($ body ['data ' ]) ? $ body ['data ' ] : $ body ,
121
+ ];
122
+
123
+ $ payload ['Body ' ] = json_encode ($ body );
124
+
125
+ return $ payload ;
126
+ }
127
+
128
+ /**
129
+ * @param string|array $payload
130
+ * @param string $class
131
+ * @return array
132
+ */
133
+ private function modifyMultiplePayload ($ payload , $ class )
103
134
{
104
135
if (! is_array ($ payload )) {
105
136
$ payload = json_decode ($ payload , true );
0 commit comments