$receiver =
new DummyReceiver([$envelope]);
$bus =
$this->
createMock(MessageBusInterface::
class);
$bus->
method('dispatch'
)->
willReturnArgument(0
);
$eventDispatcher =
new EventDispatcher();
$eventDispatcher->
addSubscriber(new StopWorkerOnMessageLimitListener(2
));
$rateLimitCount = 0;
$listener =
function DWorkerRateLimitedEvent
$event) use (&
$rateLimitCount) { ++
$rateLimitCount;
$event->
getLimiter()->
reset(); // Reset limiter to continue test
};
$eventDispatcher->
addListener(WorkerRateLimitedEvent::
class,
$listener);
$rateLimitFactory =
new RateLimiterFactory([ 'id' => 'bus',
'policy' => 'fixed_window',
'limit' => 1,
'interval' => '1 minute',
],
new InMemoryStorage());
$worker =
new Worker(['bus' =>
$receiver],
$bus,
$eventDispatcher, null,
['bus' =>
$rateLimitFactory],
new MockClock());