[Messenger] Extract the creation of configuration from Connection::fromDsn to ConfigurationFactory #38989
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
I had a case in my app where I wanted to use the same instance of
SqsClient
in my own code as well as viaConnection
from this package. While it is possible to inject anSqsClient
intoConnection::__construct
, this makes us miss out on all the useful configuration processing that happens when usingConnection::fromDsn
, so I had to copy-paste all the code fromConnection::fromDsn
that's responsible for creating the client configuration.Solution
By separating the configuration processing logic from the instantiations done in the last line of
Connection::fromDsn
, we allow users to create an instance ofSqsClient
on their own without duplicating code.Usage
Old usage
Backwards compatibility is preserved, i.e. a call to
Connection::fromDsn($dsn, $options)
will still give you aConnection
with a createdSqsClient
inside it.New usage
If you want to create an
SqsClient
yourself, you can do it like this: