php-amqplib / RabbitMqBundle

RabbitMQ Bundle for the Symfony web framework
MIT License
1.22k stars 470 forks source link

Add Producer events #728

Closed nathanjrobertson closed 4 weeks ago

nathanjrobertson commented 1 month ago

Currently, Consumers have events which allow users of the bundle to add custom code. This PR adds this support to Producers as well. Really useful for project specific logging, message format validation, etc.

The only real difference between the Consumer and Producer events is the addition of the routingKey field in the Events, as $producer->routingKey is only set in the case where it is explicitly set, and not in the case where defaultRoutingKey is used. This PR currently works around this by providing that extra field, but it might be better to change Producer.php (line 67) from:

$real_routingKey = $routingKey !== null ? $routingKey : $this->defaultRoutingKey;

to

if ($routingKey === null) {
    $routingKey = $this->defaultRoutingKey;
}

and then removing the extra routingKey field from the Events. Happy to take feedback on which way you'd prefer this one go.

My use case for this support is message validation prior to publishing.

mihaileu commented 4 weeks ago

thanks foe your pr

aistis- commented 4 weeks ago

This PR introduces a bug.

Constant BeforeProducerPublishMessageEvent::NAME refers to AMQPEvent::BEFORE_PROCESSING_MESSAGE instead of having an unique event name. This incorrectly triggers consumer listeners if already exist.

@nathanjrobertson @mihaileu

https://github.com/php-amqplib/RabbitMqBundle/pull/728/files#diff-119c96dec69c3e13773ac5840292aa823465227340b94b5a3add20530ef2f327R70

mihaileu commented 4 weeks ago

fixed in #729

nathanjrobertson commented 3 weeks ago

Thank you, and apologies for the regression.