@@ -34,23 +34,31 @@ class QueueConsumer
34
34
private $ boundProcessors ;
35
35
36
36
/**
37
- * @var int
37
+ * @var int|float in milliseconds
38
38
*/
39
- private $ idleMicroseconds ;
39
+ private $ idleTimeout ;
40
+
41
+ /**
42
+ * @var int|float in milliseconds
43
+ */
44
+ private $ receiveTimeout ;
40
45
41
46
/**
42
47
* @param PsrContext $psrContext
43
48
* @param ExtensionInterface|ChainExtension|null $extension
44
- * @param int $idleMicroseconds 100ms by default
49
+ * @param int|float $idleTimeout the time in milliseconds queue consumer waits if no message received
50
+ * @param int|float $receiveTimeout the time in milliseconds queue consumer waits for a message (10 ms by default)
45
51
*/
46
52
public function __construct (
47
53
PsrContext $ psrContext ,
48
54
ExtensionInterface $ extension = null ,
49
- $ idleMicroseconds = 100000
55
+ $ idleTimeout = 0 ,
56
+ $ receiveTimeout = 10000
50
57
) {
51
58
$ this ->psrContext = $ psrContext ;
52
59
$ this ->extension = $ extension ;
53
- $ this ->idleMicroseconds = $ idleMicroseconds ;
60
+ $ this ->idleTimeout = $ idleTimeout ;
61
+ $ this ->receiveTimeout = $ receiveTimeout ;
54
62
55
63
$ this ->boundProcessors = [];
56
64
}
@@ -181,7 +189,7 @@ protected function doConsume(ExtensionInterface $extension, Context $context)
181
189
throw new ConsumptionInterruptedException ();
182
190
}
183
191
184
- if ($ message = $ consumer ->receive ($ timeout = 5000 )) {
192
+ if ($ message = $ consumer ->receive ($ this -> receiveTimeout )) {
185
193
$ logger ->info ('Message received from the queue: ' .$ context ->getPsrQueue ()->getQueueName ());
186
194
$ logger ->debug ('Headers: {headers} ' , ['headers ' => new VarExport ($ message ->getHeaders ())]);
187
195
$ logger ->debug ('Properties: {properties} ' , ['properties ' => new VarExport ($ message ->getProperties ())]);
@@ -215,7 +223,7 @@ protected function doConsume(ExtensionInterface $extension, Context $context)
215
223
216
224
$ extension ->onPostReceived ($ context );
217
225
} else {
218
- usleep ($ this ->idleMicroseconds );
226
+ usleep ($ this ->idleTimeout * 1000 );
219
227
$ extension ->onIdle ($ context );
220
228
}
221
229
0 commit comments