Add Observability instrumentation for Jakarta JMS #4007
Merged
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.
This commit adds a new
JmsInstrumentation
class that instrumentsan instances of a
jakarta.jms.Session
with the Observation API.This proxies the
MessageProducer
andMessageConsumer
instancescreated by the session and creates dedicated observations:
send*
method calls onMessageProducer
will create"jms.message.publish"
observations.
MessageListener
onMessageConsumer
instances returnedby the session,
"jms.message.process"
observations are created when messagesare received and processed by the callback.
Here is how an existing JMS Session instance can be instrumented for observability:
This change does not instrument
receive
methods on theMessageConsumer
as there is little value here. The resulting metricwould only measure the time it takes to receive the message (i.e. not
process it) and there would be no actionable trace, as those methods
return the received
Message
and its processing will not happen inscope.