@@ -48,7 +48,8 @@ private function getClass($queue = null): string
4848 return Config::get ('sqs-queue-reader.default-handler ' );
4949 }
5050
51- $ queue = end (explode ('/ ' , $ queue ));
51+ $ queueArray = explode ('/ ' , $ queue );
52+ $ queue = end ($ queueArray );
5253
5354 return (array_key_exists ($ queue , Config::get ('sqs-queue-reader.handlers ' )))
5455 ? Config::get ('sqs-queue-reader.handlers ' )[$ queue ]
@@ -64,12 +65,15 @@ private function getClass($queue = null): string
6465 public function pop ($ queue = null )
6566 {
6667 $ 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 ' ];
6771
6872 try {
6973 $ response = $ this ->sqs ->receiveMessage ([
7074 'QueueUrl ' => $ queue ,
7175 'AttributeNames ' => ['ApproximateReceiveCount ' ],
72- 'MaxNumberOfMessages ' => 5 ,
76+ 'MaxNumberOfMessages ' => $ count ,
7377 'MessageAttributeNames ' => ['All ' ],
7478 ]);
7579
@@ -82,7 +86,11 @@ public function pop($queue = null)
8286 ? $ this ->container ['config ' ]->get ('sqs-queue-reader.handlers ' )[$ queueId ]
8387 : $ this ->container ['config ' ]->get ('sqs-queue-reader.default-handler ' );
8488
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+ }
8694 Log::debug ('New $responseV2== ' , [$ response ]);
8795
8896 return new SqsJob ($ this ->container , $ this ->sqs , $ response , $ this ->connectionName , $ queue );
@@ -99,7 +107,30 @@ public function pop($queue = null)
99107 * @param string $class
100108 * @return array
101109 */
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 )
103134 {
104135 if (! is_array ($ payload )) {
105136 $ payload = json_decode ($ payload , true );
0 commit comments