syntropylog 0.7.2 → 0.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -8
- package/dist/brokers/InstrumentedBrokerClient.js +44 -9
- package/dist/brokers/InstrumentedBrokerClient.js.map +1 -1
- package/dist/brokers/index.cjs +44 -9
- package/dist/brokers/index.cjs.map +1 -1
- package/dist/brokers/index.d.ts +2 -2
- package/dist/brokers/index.mjs +44 -9
- package/dist/brokers/index.mjs.map +1 -1
- package/dist/config.js +2 -2
- package/dist/http/index.d.ts +2 -2
- package/dist/index.cjs +44 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +44 -9
- package/dist/index.mjs.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/config.d.ts +2 -2
- package/dist/types/index.d.ts +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -556,13 +556,13 @@ describe('UserService', () => {
|
|
|
556
556
|
- **[syntropylog](https://www.npmjs.com/package/syntropylog)** - Core framework
|
|
557
557
|
- **[@syntropylog/adapters](https://www.npmjs.com/package/@syntropylog/adapters)** - HTTP and broker adapters
|
|
558
558
|
- **[@syntropylog/types](https://www.npmjs.com/package/@syntropylog/types)** - TypeScript types
|
|
559
|
-
- **[syntropylog-examples](https://github.com/Syntropysoft/syntropylog-examples
|
|
559
|
+
- **[syntropylog-examples](https://github.com/Syntropysoft/syntropylog-examples)** - 32 complete examples
|
|
560
560
|
|
|
561
561
|
## 🚀 Examples
|
|
562
562
|
|
|
563
563
|
Complete examples demonstrating SyntropyLog features:
|
|
564
564
|
|
|
565
|
-
### ✅ **Complete & Tested (00-
|
|
565
|
+
### ✅ **Complete & Tested (00-15, 20-24, 28-32)**
|
|
566
566
|
|
|
567
567
|
#### **🎯 Beginner Friendly (00-09)**
|
|
568
568
|
- **00**: Basic Setup - Simple initialization and logging
|
|
@@ -576,11 +576,13 @@ Complete examples demonstrating SyntropyLog features:
|
|
|
576
576
|
- **08**: Serialization - Custom data formatting and masking
|
|
577
577
|
- **09**: Testing - Unit tests with SyntropyLogMock
|
|
578
578
|
|
|
579
|
-
#### **🌐 HTTP Framework Integration (10-
|
|
579
|
+
#### **🌐 HTTP Framework Integration (10-15)**
|
|
580
580
|
- **10**: Express.js - Traditional Express server with context
|
|
581
581
|
- **11**: Koa.js - Modern Koa server with middleware
|
|
582
|
-
- **12**: Express + Redis + Axios - Complete microservice with caching
|
|
583
|
-
- **13**: Fastify + Redis - High-performance Fastify with automatic context propagation
|
|
582
|
+
- **12**: Express + Redis + Axios - Complete microservice with caching *(Reviewed and Fixed)*
|
|
583
|
+
- **13**: Fastify + Redis - High-performance Fastify with automatic context propagation *(Reviewed and Fixed)*
|
|
584
|
+
- **14**: NestJS Integration - Enterprise-grade framework with decorators
|
|
585
|
+
- **15**: Hapi.js Integration - Enterprise server with plugin architecture
|
|
584
586
|
|
|
585
587
|
#### **📡 Message Brokers (20-24)**
|
|
586
588
|
- **20**: Kafka Integration - Event streaming with correlation
|
|
@@ -596,8 +598,8 @@ Complete examples demonstrating SyntropyLog features:
|
|
|
596
598
|
- **31**: Serializer Testing - Custom serializer validation
|
|
597
599
|
- **32**: Transport Spies - Testing log outputs and formats
|
|
598
600
|
|
|
599
|
-
### 🚧 **In Development (
|
|
600
|
-
- **
|
|
601
|
+
### 🚧 **In Development (16-19, 25-27)**
|
|
602
|
+
- **16-19**: Advanced Framework Features - Custom serializers, advanced patterns
|
|
601
603
|
- **25-27**: Enterprise Patterns - Production configuration, advanced context
|
|
602
604
|
|
|
603
605
|
### **🎯 Quick Start Examples**
|
|
@@ -617,7 +619,7 @@ Complete examples demonstrating SyntropyLog features:
|
|
|
617
619
|
- **Vitest**: Example 28 (recommended)
|
|
618
620
|
- **Jest**: Example 29
|
|
619
621
|
|
|
620
|
-
[View all examples →](https://github.com/Syntropysoft/syntropylog-examples
|
|
622
|
+
[View all examples →](https://github.com/Syntropysoft/syntropylog-examples)
|
|
621
623
|
|
|
622
624
|
## 🤝 Contributing
|
|
623
625
|
|
|
@@ -55,6 +55,8 @@ export class InstrumentedBrokerClient {
|
|
|
55
55
|
if (!message.headers) {
|
|
56
56
|
message.headers = {};
|
|
57
57
|
}
|
|
58
|
+
// Get current correlation ID from the active context (only if it exists, don't generate new)
|
|
59
|
+
const currentCorrelationId = (this.contextManager.get(this.contextManager.getCorrelationIdHeaderName()) || this.contextManager.get('correlationId'));
|
|
58
60
|
// 1. Inject context into headers based on the configuration.
|
|
59
61
|
if (this.config.propagate?.includes('*')) {
|
|
60
62
|
// Wildcard behavior: Propagate the entire context map.
|
|
@@ -90,11 +92,10 @@ export class InstrumentedBrokerClient {
|
|
|
90
92
|
}
|
|
91
93
|
}
|
|
92
94
|
}
|
|
93
|
-
//
|
|
94
|
-
|
|
95
|
-
if (correlationId) {
|
|
95
|
+
// Only propagate correlation ID if it exists in the context (don't generate new)
|
|
96
|
+
if (currentCorrelationId) {
|
|
96
97
|
message.headers[this.contextManager.getCorrelationIdHeaderName()] =
|
|
97
|
-
|
|
98
|
+
currentCorrelationId;
|
|
98
99
|
}
|
|
99
100
|
const transactionId = this.contextManager.getTransactionId();
|
|
100
101
|
if (transactionId) {
|
|
@@ -106,6 +107,7 @@ export class InstrumentedBrokerClient {
|
|
|
106
107
|
messageId: message.headers?.['id'] instanceof Buffer
|
|
107
108
|
? message.headers?.['id'].toString()
|
|
108
109
|
: message.headers?.['id'],
|
|
110
|
+
correlationId: currentCorrelationId, // Log the correlation ID being used
|
|
109
111
|
}, 'Publishing message...');
|
|
110
112
|
await this.adapter.publish(topic, message);
|
|
111
113
|
this.logger.info({
|
|
@@ -113,6 +115,7 @@ export class InstrumentedBrokerClient {
|
|
|
113
115
|
messageId: message.headers?.['id'] instanceof Buffer
|
|
114
116
|
? message.headers?.['id'].toString()
|
|
115
117
|
: message.headers?.['id'],
|
|
118
|
+
correlationId: currentCorrelationId, // Log the correlation ID being used
|
|
116
119
|
}, 'Message published successfully.');
|
|
117
120
|
}
|
|
118
121
|
/**
|
|
@@ -127,15 +130,47 @@ export class InstrumentedBrokerClient {
|
|
|
127
130
|
this.logger.info({ topic }, 'Subscribing to topic...');
|
|
128
131
|
// Wrap the user's handler to implement automatic context propagation.
|
|
129
132
|
const instrumentedHandler = async (message, controls) => {
|
|
130
|
-
//
|
|
131
|
-
|
|
132
|
-
|
|
133
|
+
// Get correlation ID from message headers first
|
|
134
|
+
const messageCorrelationId = message.headers?.[this.contextManager.getCorrelationIdHeaderName()];
|
|
135
|
+
// Get current correlation ID from context (but don't generate new one if not exists)
|
|
136
|
+
const currentCorrelationId = this.contextManager.get(this.contextManager.getCorrelationIdHeaderName());
|
|
137
|
+
// If message has different correlation ID, restore context from message
|
|
138
|
+
if (messageCorrelationId &&
|
|
139
|
+
messageCorrelationId !== currentCorrelationId) {
|
|
140
|
+
await this.contextManager.run(async () => {
|
|
141
|
+
if (message.headers) {
|
|
142
|
+
for (const key in message.headers) {
|
|
143
|
+
this.contextManager.set(key, message.headers[key]);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Use the message correlation ID for logging instead of generating a new one
|
|
147
|
+
const correlationId = messageCorrelationId;
|
|
148
|
+
this.logger.info({ topic, correlationId }, 'Received message.');
|
|
149
|
+
// Also wrap the lifecycle controls to add logging for ack/nack actions.
|
|
150
|
+
const instrumentedControls = {
|
|
151
|
+
ack: async () => {
|
|
152
|
+
await controls.ack();
|
|
153
|
+
this.logger.debug({ topic, correlationId }, 'Message acknowledged (ack).');
|
|
154
|
+
},
|
|
155
|
+
nack: async (requeue) => {
|
|
156
|
+
await controls.nack(requeue);
|
|
157
|
+
this.logger.warn({ topic, correlationId, requeue }, 'Message negatively acknowledged (nack).');
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
// Execute the original user-provided handler.
|
|
161
|
+
await handler(message, instrumentedControls);
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
// Use current context, just set message headers if needed
|
|
133
166
|
if (message.headers) {
|
|
134
167
|
for (const key in message.headers) {
|
|
135
168
|
this.contextManager.set(key, message.headers[key]);
|
|
136
169
|
}
|
|
137
170
|
}
|
|
138
|
-
|
|
171
|
+
// Use the message correlation ID if available, otherwise use current context (but don't generate new one)
|
|
172
|
+
const correlationId = messageCorrelationId ||
|
|
173
|
+
this.contextManager.get(this.contextManager.getCorrelationIdHeaderName());
|
|
139
174
|
this.logger.info({ topic, correlationId }, 'Received message.');
|
|
140
175
|
// Also wrap the lifecycle controls to add logging for ack/nack actions.
|
|
141
176
|
const instrumentedControls = {
|
|
@@ -150,7 +185,7 @@ export class InstrumentedBrokerClient {
|
|
|
150
185
|
};
|
|
151
186
|
// Execute the original user-provided handler.
|
|
152
187
|
await handler(message, instrumentedControls);
|
|
153
|
-
}
|
|
188
|
+
}
|
|
154
189
|
};
|
|
155
190
|
await this.adapter.subscribe(topic, instrumentedHandler);
|
|
156
191
|
this.logger.info({ topic }, 'Successfully subscribed to topic.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstrumentedBrokerClient.js","sourceRoot":"","sources":["../../src/brokers/InstrumentedBrokerClient.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"InstrumentedBrokerClient.js","sourceRoot":"","sources":["../../src/brokers/InstrumentedBrokerClient.ts"],"names":[],"mappings":"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"}
|
package/dist/brokers/index.cjs
CHANGED
|
@@ -52,6 +52,8 @@ class InstrumentedBrokerClient {
|
|
|
52
52
|
if (!message.headers) {
|
|
53
53
|
message.headers = {};
|
|
54
54
|
}
|
|
55
|
+
// Get current correlation ID from the active context (only if it exists, don't generate new)
|
|
56
|
+
const currentCorrelationId = (this.contextManager.get(this.contextManager.getCorrelationIdHeaderName()) || this.contextManager.get('correlationId'));
|
|
55
57
|
// 1. Inject context into headers based on the configuration.
|
|
56
58
|
if (this.config.propagate?.includes('*')) {
|
|
57
59
|
// Wildcard behavior: Propagate the entire context map.
|
|
@@ -87,11 +89,10 @@ class InstrumentedBrokerClient {
|
|
|
87
89
|
}
|
|
88
90
|
}
|
|
89
91
|
}
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
if (correlationId) {
|
|
92
|
+
// Only propagate correlation ID if it exists in the context (don't generate new)
|
|
93
|
+
if (currentCorrelationId) {
|
|
93
94
|
message.headers[this.contextManager.getCorrelationIdHeaderName()] =
|
|
94
|
-
|
|
95
|
+
currentCorrelationId;
|
|
95
96
|
}
|
|
96
97
|
const transactionId = this.contextManager.getTransactionId();
|
|
97
98
|
if (transactionId) {
|
|
@@ -103,6 +104,7 @@ class InstrumentedBrokerClient {
|
|
|
103
104
|
messageId: message.headers?.['id'] instanceof Buffer
|
|
104
105
|
? message.headers?.['id'].toString()
|
|
105
106
|
: message.headers?.['id'],
|
|
107
|
+
correlationId: currentCorrelationId, // Log the correlation ID being used
|
|
106
108
|
}, 'Publishing message...');
|
|
107
109
|
await this.adapter.publish(topic, message);
|
|
108
110
|
this.logger.info({
|
|
@@ -110,6 +112,7 @@ class InstrumentedBrokerClient {
|
|
|
110
112
|
messageId: message.headers?.['id'] instanceof Buffer
|
|
111
113
|
? message.headers?.['id'].toString()
|
|
112
114
|
: message.headers?.['id'],
|
|
115
|
+
correlationId: currentCorrelationId, // Log the correlation ID being used
|
|
113
116
|
}, 'Message published successfully.');
|
|
114
117
|
}
|
|
115
118
|
/**
|
|
@@ -124,15 +127,47 @@ class InstrumentedBrokerClient {
|
|
|
124
127
|
this.logger.info({ topic }, 'Subscribing to topic...');
|
|
125
128
|
// Wrap the user's handler to implement automatic context propagation.
|
|
126
129
|
const instrumentedHandler = async (message, controls) => {
|
|
127
|
-
//
|
|
128
|
-
|
|
129
|
-
|
|
130
|
+
// Get correlation ID from message headers first
|
|
131
|
+
const messageCorrelationId = message.headers?.[this.contextManager.getCorrelationIdHeaderName()];
|
|
132
|
+
// Get current correlation ID from context (but don't generate new one if not exists)
|
|
133
|
+
const currentCorrelationId = this.contextManager.get(this.contextManager.getCorrelationIdHeaderName());
|
|
134
|
+
// If message has different correlation ID, restore context from message
|
|
135
|
+
if (messageCorrelationId &&
|
|
136
|
+
messageCorrelationId !== currentCorrelationId) {
|
|
137
|
+
await this.contextManager.run(async () => {
|
|
138
|
+
if (message.headers) {
|
|
139
|
+
for (const key in message.headers) {
|
|
140
|
+
this.contextManager.set(key, message.headers[key]);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Use the message correlation ID for logging instead of generating a new one
|
|
144
|
+
const correlationId = messageCorrelationId;
|
|
145
|
+
this.logger.info({ topic, correlationId }, 'Received message.');
|
|
146
|
+
// Also wrap the lifecycle controls to add logging for ack/nack actions.
|
|
147
|
+
const instrumentedControls = {
|
|
148
|
+
ack: async () => {
|
|
149
|
+
await controls.ack();
|
|
150
|
+
this.logger.debug({ topic, correlationId }, 'Message acknowledged (ack).');
|
|
151
|
+
},
|
|
152
|
+
nack: async (requeue) => {
|
|
153
|
+
await controls.nack(requeue);
|
|
154
|
+
this.logger.warn({ topic, correlationId, requeue }, 'Message negatively acknowledged (nack).');
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
// Execute the original user-provided handler.
|
|
158
|
+
await handler(message, instrumentedControls);
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
// Use current context, just set message headers if needed
|
|
130
163
|
if (message.headers) {
|
|
131
164
|
for (const key in message.headers) {
|
|
132
165
|
this.contextManager.set(key, message.headers[key]);
|
|
133
166
|
}
|
|
134
167
|
}
|
|
135
|
-
|
|
168
|
+
// Use the message correlation ID if available, otherwise use current context (but don't generate new one)
|
|
169
|
+
const correlationId = messageCorrelationId ||
|
|
170
|
+
this.contextManager.get(this.contextManager.getCorrelationIdHeaderName());
|
|
136
171
|
this.logger.info({ topic, correlationId }, 'Received message.');
|
|
137
172
|
// Also wrap the lifecycle controls to add logging for ack/nack actions.
|
|
138
173
|
const instrumentedControls = {
|
|
@@ -147,7 +182,7 @@ class InstrumentedBrokerClient {
|
|
|
147
182
|
};
|
|
148
183
|
// Execute the original user-provided handler.
|
|
149
184
|
await handler(message, instrumentedControls);
|
|
150
|
-
}
|
|
185
|
+
}
|
|
151
186
|
};
|
|
152
187
|
await this.adapter.subscribe(topic, instrumentedHandler);
|
|
153
188
|
this.logger.info({ topic }, 'Successfully subscribed to topic.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/brokers/InstrumentedBrokerClient.ts","../../src/internal-types.ts","../../src/types.ts","../../src/brokers/BrokerManager.ts"],"sourcesContent":[null,null,null,null],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/brokers/InstrumentedBrokerClient.ts","../../src/internal-types.ts","../../src/types.ts","../../src/brokers/BrokerManager.ts"],"sourcesContent":[null,null,null,null],"names":[],"mappings":";;AAgBA;;;;AAIG;MACU,wBAAwB,CAAA;AAGnC;;;;;;AAMG;AACH,IAAA,WAAA,CACmB,OAAuB,EACvB,MAAe,EACf,cAA+B,EAC/B,MAA4B,EAAA;QAH5B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;QACvB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAS;QACf,IAAc,CAAA,cAAA,GAAd,cAAc,CAAiB;QAC/B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAsB;AAE7C,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;KACzC;AAED;;;;AAIG;AACI,IAAA,MAAM,OAAO,GAAA;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAC5C,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;KACvD;AAED;;;;AAIG;AACI,IAAA,MAAM,UAAU,GAAA;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;AACjD,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;KAC5D;AAED;;;;;;;AAOG;AACI,IAAA,MAAM,OAAO,CAAC,KAAa,EAAE,OAAsB,EAAA;AACxD,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACpB,YAAA,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;SACtB;;QAGD,MAAM,oBAAoB,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CACnD,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE,CACjD,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,CAAuB,CAAC;;QAErE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE;;YAExC,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;AACnD,YAAA,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE;AAC/B,gBAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE;AAC5D,oBAAA,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AACjC,oBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACvD,wBAAA,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;qBAC9B;iBACF;aACF;SACF;AAAM,aAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;;YAExE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;gBACvC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3C,gBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACvD,oBAAA,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;iBAC9B;aACF;SACF;AAAM,aAAA,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;;YAE3C,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;AACnD,YAAA,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE;AAC/B,gBAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE;AAC5D,oBAAA,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AACjC,oBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;;AAEvD,wBAAA,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;qBAC9B;iBACF;aACF;SACF;;QAGD,IAAI,oBAAoB,EAAE;YACxB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE,CAAC;AAC/D,gBAAA,oBAAoB,CAAC;SACxB;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QAC7D,IAAI,aAAa,EAAE;YACjB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE,CAAC;AAC/D,gBAAA,aAAa,CAAC;SACjB;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;YACE,KAAK;YACL,SAAS,EACP,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,MAAM;kBACrC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE;AACpC,kBAAE,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;YAC7B,aAAa,EAAE,oBAAoB;SAC7B,EACR,uBAAuB,CACxB,CAAC;QACF,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;YACE,KAAK;YACL,SAAS,EACP,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,MAAM;kBACrC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE;AACpC,kBAAE,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;YAC7B,aAAa,EAAE,oBAAoB;SAC7B,EACR,iCAAiC,CAClC,CAAC;KACH;AAED;;;;;;;AAOG;AACI,IAAA,MAAM,SAAS,CACpB,KAAa,EACb,OAAuB,EAAA;QAEvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAC;;QAGvD,MAAM,mBAAmB,GAAmB,OAAO,OAAO,EAAE,QAAQ,KAAI;;AAEtE,YAAA,MAAM,oBAAoB,GACxB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE,CAAC,CAAC;;AAGtE,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAClD,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE,CACvC,CAAC;;AAGZ,YAAA,IACE,oBAAoB;gBACpB,oBAAoB,KAAK,oBAAoB,EAC7C;gBACA,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAW;AACvC,oBAAA,IAAI,OAAO,CAAC,OAAO,EAAE;AACnB,wBAAA,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE;AACjC,4BAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;yBACpD;qBACF;;oBAGD,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAC3C,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,KAAK,EAAE,aAAa,EAAS,EAC/B,mBAAmB,CACpB,CAAC;;AAGF,oBAAA,MAAM,oBAAoB,GAA6B;wBACrD,GAAG,EAAE,YAAW;AACd,4BAAA,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC;AACrB,4BAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,KAAK,EAAE,aAAa,EAAS,EAC/B,6BAA6B,CAC9B,CAAC;yBACH;AACD,wBAAA,IAAI,EAAE,OAAO,OAAO,KAAI;AACtB,4BAAA,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,4BAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAS,EACxC,yCAAyC,CAC1C,CAAC;yBACH;qBACF,CAAC;;AAGF,oBAAA,MAAM,OAAO,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;AAC/C,iBAAC,CAAC,CAAC;aACJ;iBAAM;;AAEL,gBAAA,IAAI,OAAO,CAAC,OAAO,EAAE;AACnB,oBAAA,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE;AACjC,wBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;qBACpD;iBACF;;gBAGD,MAAM,aAAa,GACjB,oBAAoB;AACnB,oBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACtB,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE,CACtC,CAAC;AACf,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAS,EAAE,mBAAmB,CAAC,CAAC;;AAGvE,gBAAA,MAAM,oBAAoB,GAA6B;oBACrD,GAAG,EAAE,YAAW;AACd,wBAAA,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC;AACrB,wBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,KAAK,EAAE,aAAa,EAAS,EAC/B,6BAA6B,CAC9B,CAAC;qBACH;AACD,oBAAA,IAAI,EAAE,OAAO,OAAO,KAAI;AACtB,wBAAA,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,wBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAS,EACxC,yCAAyC,CAC1C,CAAC;qBACH;iBACF,CAAC;;AAGF,gBAAA,MAAM,OAAO,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;aAC9C;AACH,SAAC,CAAC;QAEF,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,mCAAmC,CAAC,CAAC;KAClE;AACF;;ACjQD;;;;;AAKG;AAgBH;;;AAGG;AACG,SAAU,gBAAgB,CAAC,KAAc,EAAA;AAC7C,IAAA,IAAI,KAAK,YAAY,KAAK,EAAE;QAC1B,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;AACtB,YAAA,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;SAC3B,CAAC;KACH;AACD,IAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB;;AClCA;;;;AAIG;AA+CH;;ACnDA;;;;;AAKG;AAqBH;;;;;AAKG;MACU,aAAa,CAAA;AAOxB,IAAA,WAAA,CACE,MAA4B,EAC5B,MAAe,EACf,cAA+B,EAAA;AAThB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,GAAG,EAAoC,CAAC;AAWvE,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;KACtC;AAEM,IAAA,MAAM,IAAI,GAAA;AACf,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAChE,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,kEAAkE,CACnE,CAAC;YACF,OAAO;SACR;AAED,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAChD,OAAO,cAAc,KAAI;AACvB,YAAA,IAAI;AACF,gBAAA,MAAM,MAAM,GAAG,IAAI,wBAAwB,CACzC,cAAc,CAAC,OAAO,EACtB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,cAAc,EACnB,cAAc,CACf,CAAC;AACF,gBAAA,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;gBACvB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,CAA2B,wBAAA,EAAA,cAAc,CAAC,YAAY,CAAuC,qCAAA,CAAA,CAC9F,CAAC;gBAEF,IAAI,cAAc,CAAC,YAAY,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;oBACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,CAAoC,iCAAA,EAAA,cAAc,CAAC,YAAY,CAAE,CAAA,CAClE,CAAC;AACF,oBAAA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;iBAC/B;aACF;YAAC,OAAO,KAAK,EAAE;AACd,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,qCAAqC,cAAc,CAAC,YAAY,CAAA,EAAA,CAAI,EACpE,gBAAgB,CAAC,KAAK,CAAC,CACxB,CAAC;aACH;AACH,SAAC,CACF,CAAC;AAEF,QAAA,MAAM,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAEpC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE;AACpD,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;AAC3D,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,CAA0E,uEAAA,EAAA,SAAS,CAAE,CAAA,CACtF,CAAC;AACF,YAAA,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC;SACtC;KACF;AAEM,IAAA,WAAW,CAAC,IAAa,EAAA;QAC9B,MAAM,YAAY,GAAG,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC;QAChE,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;SACH;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CACb,qCAAqC,YAAY,CAAA,0CAAA,CAA4C,CAC9F,CAAC;SACH;AACD,QAAA,OAAO,QAAQ,CAAC;KACjB;AAEM,IAAA,MAAM,QAAQ,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACxD,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAC9D,CAAC,QAAQ,KAAK,QAAQ,CAAC,UAAU,EAAE,CACpC,CAAC;AACF,QAAA,MAAM,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;KAC5C;AACF;;;;;"}
|
package/dist/brokers/index.d.ts
CHANGED
|
@@ -437,8 +437,8 @@ declare const brokerConfigSchema: z.ZodOptional<z.ZodObject<{
|
|
|
437
437
|
/**
|
|
438
438
|
* @file src/config.ts
|
|
439
439
|
* @description Defines and exports the configuration types for the library.
|
|
440
|
-
* These types are
|
|
441
|
-
*
|
|
440
|
+
* These types are now explicitly defined for better TypeScript intellisense and autocompletion,
|
|
441
|
+
* while still using Zod schemas for runtime validation.
|
|
442
442
|
*/
|
|
443
443
|
|
|
444
444
|
/**
|
package/dist/brokers/index.mjs
CHANGED
|
@@ -50,6 +50,8 @@ class InstrumentedBrokerClient {
|
|
|
50
50
|
if (!message.headers) {
|
|
51
51
|
message.headers = {};
|
|
52
52
|
}
|
|
53
|
+
// Get current correlation ID from the active context (only if it exists, don't generate new)
|
|
54
|
+
const currentCorrelationId = (this.contextManager.get(this.contextManager.getCorrelationIdHeaderName()) || this.contextManager.get('correlationId'));
|
|
53
55
|
// 1. Inject context into headers based on the configuration.
|
|
54
56
|
if (this.config.propagate?.includes('*')) {
|
|
55
57
|
// Wildcard behavior: Propagate the entire context map.
|
|
@@ -85,11 +87,10 @@ class InstrumentedBrokerClient {
|
|
|
85
87
|
}
|
|
86
88
|
}
|
|
87
89
|
}
|
|
88
|
-
//
|
|
89
|
-
|
|
90
|
-
if (correlationId) {
|
|
90
|
+
// Only propagate correlation ID if it exists in the context (don't generate new)
|
|
91
|
+
if (currentCorrelationId) {
|
|
91
92
|
message.headers[this.contextManager.getCorrelationIdHeaderName()] =
|
|
92
|
-
|
|
93
|
+
currentCorrelationId;
|
|
93
94
|
}
|
|
94
95
|
const transactionId = this.contextManager.getTransactionId();
|
|
95
96
|
if (transactionId) {
|
|
@@ -101,6 +102,7 @@ class InstrumentedBrokerClient {
|
|
|
101
102
|
messageId: message.headers?.['id'] instanceof Buffer
|
|
102
103
|
? message.headers?.['id'].toString()
|
|
103
104
|
: message.headers?.['id'],
|
|
105
|
+
correlationId: currentCorrelationId, // Log the correlation ID being used
|
|
104
106
|
}, 'Publishing message...');
|
|
105
107
|
await this.adapter.publish(topic, message);
|
|
106
108
|
this.logger.info({
|
|
@@ -108,6 +110,7 @@ class InstrumentedBrokerClient {
|
|
|
108
110
|
messageId: message.headers?.['id'] instanceof Buffer
|
|
109
111
|
? message.headers?.['id'].toString()
|
|
110
112
|
: message.headers?.['id'],
|
|
113
|
+
correlationId: currentCorrelationId, // Log the correlation ID being used
|
|
111
114
|
}, 'Message published successfully.');
|
|
112
115
|
}
|
|
113
116
|
/**
|
|
@@ -122,15 +125,47 @@ class InstrumentedBrokerClient {
|
|
|
122
125
|
this.logger.info({ topic }, 'Subscribing to topic...');
|
|
123
126
|
// Wrap the user's handler to implement automatic context propagation.
|
|
124
127
|
const instrumentedHandler = async (message, controls) => {
|
|
125
|
-
//
|
|
126
|
-
|
|
127
|
-
|
|
128
|
+
// Get correlation ID from message headers first
|
|
129
|
+
const messageCorrelationId = message.headers?.[this.contextManager.getCorrelationIdHeaderName()];
|
|
130
|
+
// Get current correlation ID from context (but don't generate new one if not exists)
|
|
131
|
+
const currentCorrelationId = this.contextManager.get(this.contextManager.getCorrelationIdHeaderName());
|
|
132
|
+
// If message has different correlation ID, restore context from message
|
|
133
|
+
if (messageCorrelationId &&
|
|
134
|
+
messageCorrelationId !== currentCorrelationId) {
|
|
135
|
+
await this.contextManager.run(async () => {
|
|
136
|
+
if (message.headers) {
|
|
137
|
+
for (const key in message.headers) {
|
|
138
|
+
this.contextManager.set(key, message.headers[key]);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Use the message correlation ID for logging instead of generating a new one
|
|
142
|
+
const correlationId = messageCorrelationId;
|
|
143
|
+
this.logger.info({ topic, correlationId }, 'Received message.');
|
|
144
|
+
// Also wrap the lifecycle controls to add logging for ack/nack actions.
|
|
145
|
+
const instrumentedControls = {
|
|
146
|
+
ack: async () => {
|
|
147
|
+
await controls.ack();
|
|
148
|
+
this.logger.debug({ topic, correlationId }, 'Message acknowledged (ack).');
|
|
149
|
+
},
|
|
150
|
+
nack: async (requeue) => {
|
|
151
|
+
await controls.nack(requeue);
|
|
152
|
+
this.logger.warn({ topic, correlationId, requeue }, 'Message negatively acknowledged (nack).');
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
// Execute the original user-provided handler.
|
|
156
|
+
await handler(message, instrumentedControls);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
// Use current context, just set message headers if needed
|
|
128
161
|
if (message.headers) {
|
|
129
162
|
for (const key in message.headers) {
|
|
130
163
|
this.contextManager.set(key, message.headers[key]);
|
|
131
164
|
}
|
|
132
165
|
}
|
|
133
|
-
|
|
166
|
+
// Use the message correlation ID if available, otherwise use current context (but don't generate new one)
|
|
167
|
+
const correlationId = messageCorrelationId ||
|
|
168
|
+
this.contextManager.get(this.contextManager.getCorrelationIdHeaderName());
|
|
134
169
|
this.logger.info({ topic, correlationId }, 'Received message.');
|
|
135
170
|
// Also wrap the lifecycle controls to add logging for ack/nack actions.
|
|
136
171
|
const instrumentedControls = {
|
|
@@ -145,7 +180,7 @@ class InstrumentedBrokerClient {
|
|
|
145
180
|
};
|
|
146
181
|
// Execute the original user-provided handler.
|
|
147
182
|
await handler(message, instrumentedControls);
|
|
148
|
-
}
|
|
183
|
+
}
|
|
149
184
|
};
|
|
150
185
|
await this.adapter.subscribe(topic, instrumentedHandler);
|
|
151
186
|
this.logger.info({ topic }, 'Successfully subscribed to topic.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../src/brokers/InstrumentedBrokerClient.ts","../../src/internal-types.ts","../../src/types.ts","../../src/brokers/BrokerManager.ts"],"sourcesContent":[null,null,null,null],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/brokers/InstrumentedBrokerClient.ts","../../src/internal-types.ts","../../src/types.ts","../../src/brokers/BrokerManager.ts"],"sourcesContent":[null,null,null,null],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file src/config.ts
|
|
3
3
|
* @description Defines and exports the configuration types for the library.
|
|
4
|
-
* These types are
|
|
5
|
-
*
|
|
4
|
+
* These types are now explicitly defined for better TypeScript intellisense and autocompletion,
|
|
5
|
+
* while still using Zod schemas for runtime validation.
|
|
6
6
|
*/
|
|
7
7
|
export {};
|
|
8
8
|
//# sourceMappingURL=config.js.map
|
package/dist/http/index.d.ts
CHANGED
|
@@ -389,8 +389,8 @@ declare const httpInstanceConfigSchema: z.ZodObject<{
|
|
|
389
389
|
/**
|
|
390
390
|
* @file src/config.ts
|
|
391
391
|
* @description Defines and exports the configuration types for the library.
|
|
392
|
-
* These types are
|
|
393
|
-
*
|
|
392
|
+
* These types are now explicitly defined for better TypeScript intellisense and autocompletion,
|
|
393
|
+
* while still using Zod schemas for runtime validation.
|
|
394
394
|
*/
|
|
395
395
|
|
|
396
396
|
/**
|
package/dist/index.cjs
CHANGED
|
@@ -1931,6 +1931,8 @@ class InstrumentedBrokerClient {
|
|
|
1931
1931
|
if (!message.headers) {
|
|
1932
1932
|
message.headers = {};
|
|
1933
1933
|
}
|
|
1934
|
+
// Get current correlation ID from the active context (only if it exists, don't generate new)
|
|
1935
|
+
const currentCorrelationId = (this.contextManager.get(this.contextManager.getCorrelationIdHeaderName()) || this.contextManager.get('correlationId'));
|
|
1934
1936
|
// 1. Inject context into headers based on the configuration.
|
|
1935
1937
|
if (this.config.propagate?.includes('*')) {
|
|
1936
1938
|
// Wildcard behavior: Propagate the entire context map.
|
|
@@ -1966,11 +1968,10 @@ class InstrumentedBrokerClient {
|
|
|
1966
1968
|
}
|
|
1967
1969
|
}
|
|
1968
1970
|
}
|
|
1969
|
-
//
|
|
1970
|
-
|
|
1971
|
-
if (correlationId) {
|
|
1971
|
+
// Only propagate correlation ID if it exists in the context (don't generate new)
|
|
1972
|
+
if (currentCorrelationId) {
|
|
1972
1973
|
message.headers[this.contextManager.getCorrelationIdHeaderName()] =
|
|
1973
|
-
|
|
1974
|
+
currentCorrelationId;
|
|
1974
1975
|
}
|
|
1975
1976
|
const transactionId = this.contextManager.getTransactionId();
|
|
1976
1977
|
if (transactionId) {
|
|
@@ -1982,6 +1983,7 @@ class InstrumentedBrokerClient {
|
|
|
1982
1983
|
messageId: message.headers?.['id'] instanceof Buffer
|
|
1983
1984
|
? message.headers?.['id'].toString()
|
|
1984
1985
|
: message.headers?.['id'],
|
|
1986
|
+
correlationId: currentCorrelationId, // Log the correlation ID being used
|
|
1985
1987
|
}, 'Publishing message...');
|
|
1986
1988
|
await this.adapter.publish(topic, message);
|
|
1987
1989
|
this.logger.info({
|
|
@@ -1989,6 +1991,7 @@ class InstrumentedBrokerClient {
|
|
|
1989
1991
|
messageId: message.headers?.['id'] instanceof Buffer
|
|
1990
1992
|
? message.headers?.['id'].toString()
|
|
1991
1993
|
: message.headers?.['id'],
|
|
1994
|
+
correlationId: currentCorrelationId, // Log the correlation ID being used
|
|
1992
1995
|
}, 'Message published successfully.');
|
|
1993
1996
|
}
|
|
1994
1997
|
/**
|
|
@@ -2003,15 +2006,47 @@ class InstrumentedBrokerClient {
|
|
|
2003
2006
|
this.logger.info({ topic }, 'Subscribing to topic...');
|
|
2004
2007
|
// Wrap the user's handler to implement automatic context propagation.
|
|
2005
2008
|
const instrumentedHandler = async (message, controls) => {
|
|
2006
|
-
//
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
+
// Get correlation ID from message headers first
|
|
2010
|
+
const messageCorrelationId = message.headers?.[this.contextManager.getCorrelationIdHeaderName()];
|
|
2011
|
+
// Get current correlation ID from context (but don't generate new one if not exists)
|
|
2012
|
+
const currentCorrelationId = this.contextManager.get(this.contextManager.getCorrelationIdHeaderName());
|
|
2013
|
+
// If message has different correlation ID, restore context from message
|
|
2014
|
+
if (messageCorrelationId &&
|
|
2015
|
+
messageCorrelationId !== currentCorrelationId) {
|
|
2016
|
+
await this.contextManager.run(async () => {
|
|
2017
|
+
if (message.headers) {
|
|
2018
|
+
for (const key in message.headers) {
|
|
2019
|
+
this.contextManager.set(key, message.headers[key]);
|
|
2020
|
+
}
|
|
2021
|
+
}
|
|
2022
|
+
// Use the message correlation ID for logging instead of generating a new one
|
|
2023
|
+
const correlationId = messageCorrelationId;
|
|
2024
|
+
this.logger.info({ topic, correlationId }, 'Received message.');
|
|
2025
|
+
// Also wrap the lifecycle controls to add logging for ack/nack actions.
|
|
2026
|
+
const instrumentedControls = {
|
|
2027
|
+
ack: async () => {
|
|
2028
|
+
await controls.ack();
|
|
2029
|
+
this.logger.debug({ topic, correlationId }, 'Message acknowledged (ack).');
|
|
2030
|
+
},
|
|
2031
|
+
nack: async (requeue) => {
|
|
2032
|
+
await controls.nack(requeue);
|
|
2033
|
+
this.logger.warn({ topic, correlationId, requeue }, 'Message negatively acknowledged (nack).');
|
|
2034
|
+
},
|
|
2035
|
+
};
|
|
2036
|
+
// Execute the original user-provided handler.
|
|
2037
|
+
await handler(message, instrumentedControls);
|
|
2038
|
+
});
|
|
2039
|
+
}
|
|
2040
|
+
else {
|
|
2041
|
+
// Use current context, just set message headers if needed
|
|
2009
2042
|
if (message.headers) {
|
|
2010
2043
|
for (const key in message.headers) {
|
|
2011
2044
|
this.contextManager.set(key, message.headers[key]);
|
|
2012
2045
|
}
|
|
2013
2046
|
}
|
|
2014
|
-
|
|
2047
|
+
// Use the message correlation ID if available, otherwise use current context (but don't generate new one)
|
|
2048
|
+
const correlationId = messageCorrelationId ||
|
|
2049
|
+
this.contextManager.get(this.contextManager.getCorrelationIdHeaderName());
|
|
2015
2050
|
this.logger.info({ topic, correlationId }, 'Received message.');
|
|
2016
2051
|
// Also wrap the lifecycle controls to add logging for ack/nack actions.
|
|
2017
2052
|
const instrumentedControls = {
|
|
@@ -2026,7 +2061,7 @@ class InstrumentedBrokerClient {
|
|
|
2026
2061
|
};
|
|
2027
2062
|
// Execute the original user-provided handler.
|
|
2028
2063
|
await handler(message, instrumentedControls);
|
|
2029
|
-
}
|
|
2064
|
+
}
|
|
2030
2065
|
};
|
|
2031
2066
|
await this.adapter.subscribe(topic, instrumentedHandler);
|
|
2032
2067
|
this.logger.info({ topic }, 'Successfully subscribed to topic.');
|