Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Producer events #728

Merged
merged 3 commits into from
Oct 17, 2024
Merged

Conversation

nathanjrobertson
Copy link
Contributor

@nathanjrobertson nathanjrobertson commented Oct 16, 2024

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.

@@ -63,6 +65,12 @@ public function publish($msgBody, $routingKey = null, $additionalProperties = []
}

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

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$real_routingKey == routingKey ?? $this->defaultRoutingKey;

@mihaileu mihaileu merged commit 242f2ed into php-amqplib:master Oct 17, 2024
2 checks passed
@mihaileu
Copy link
Collaborator

thanks foe your pr

@nathanjrobertson nathanjrobertson deleted the publish_events branch October 17, 2024 22:14
@aistis-
Copy link

aistis- commented Oct 18, 2024

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
Copy link
Collaborator

fixed in #729

@nathanjrobertson
Copy link
Contributor Author

Thank you, and apologies for the regression.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants