Fixed initialization error in DarwinClientRouteBuilder.clientId #3
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
In
DarwinClientRouteBuilder
, theclientId
depends on theusername
, which in turn is a Spring@Value
taken fromapplication.properties
and populated with the value corresponding to the propertydarwinv16.username
.Because of how Spring works, the injection of this value can happen after the class has been built.
clientId
however is built in the class' constructor. This leads to theclientId
being initialized with ausername
that, at the time of class initialization, is stillnull
. This means that theclientId
in turn will be something along the lines ofnull-yourHostName
, and since "if you are using a Durable Subscriber, your Client ID must begin with your username", the whole setup of the JMS message listener invoker will fail with:Solution
Make this dependency between the
username
and theclientId
explicit in the constructor, by promotingusername
as constructor parameter and adding the relative@Value
annotation before it.Note
This is an alternative approach to what was proposed in #2
In case that PR shall be merged, this one should be closed.