php-enqueue/enqueue-dev

Setting a message priority doesn't seam to work

NeilWhitworth opened this issue · 0 comments

I have a process which is generating lots (measured in the 1000s) of events to be sent via enque. This obviusly causes a delay for any other events sent afterwards by default.

I have tried to set the priority of the bulk events to MessagePriority::VERY_LOW, but it has no effect - even when other events are excplicity set to a higher priority.

Digging through the enqueue code, I can see that all events are first sent to the router, via GenericDriver::sendToRouter(). This clones the event (via createTransportMessage()) but does not set the priority.

Once the router handes any events, they are pushed via GenericDriver::GenericDriver(). This also clones the event (via the same createTransportMessage()), but also includes a block of code to set the priority - aswell as delay and expiry.

Since eveything must go to the router first, and no prority is set in GenericDriver::sendToRouter(), my bulk events are always blocking any handling of higher priority events sent afterwards.

I am currently using the DBAL driver.