16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# File 'lib/mnemosyne/probes/msgr/consumer.rb', line 16
def dispatch(message)
route = message.route
metadata = message.metadata
= metadata. || {}
delivery_info = message.delivery_info
origin = .delete('mnemosyne.origin')
transaction = .delete('mnemosyne.transaction') do
::SecureRandom.uuid
end
trace = ::Mnemosyne::Instrumenter.trace(
NAME,
transaction:,
origin:
)
if trace
trace.meta[:properties] = {
content_type: metadata.content_type,
priority: metadata.priority,
headers: metadata.,
type: metadata.type,
reply_to: metadata.reply_to,
correlation_id: metadata.correlation_id,
message_id: metadata.message_id,
app_id: metadata.app_id
}
trace.meta[:delivery_info] = {
consumer_tag: delivery_info.consumer_tag,
redelivered: delivery_info.redelivered?,
routing_key: delivery_info.routing_key,
exchange: delivery_info.exchange
}
trace.meta[:route] = {
consumer: route.consumer,
action: route.action
}
trace.start!
end
super
rescue StandardError, LoadError, SyntaxError => e
trace&.attach_error(e)
raise
ensure
if trace
trace.submit
trace.release
end
end
|