Skip to content

Commit 3929e43

Browse files
authored
Merge pull request #91 from moleculerjs/issue-86
Add Error Details To DLQ Message Headers
2 parents 8ff188f + 53aa354 commit 3929e43

File tree

14 files changed

+1282
-198
lines changed

14 files changed

+1282
-198
lines changed

README.md

Lines changed: 150 additions & 25 deletions
Large diffs are not rendered by default.

examples/dead-letter/dead.service.js

Lines changed: 0 additions & 23 deletions
This file was deleted.

examples/dead-letter/index.js

Lines changed: 47 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
"use strict";
22

3-
const { ServiceBroker } = require("moleculer");
3+
const {
4+
ServiceBroker,
5+
Errors: { MoleculerError }
6+
} = require("moleculer");
47
const ChannelsMiddleware = require("../..").Middleware;
58

6-
const deadServiceSchema = require("./dead.service");
7-
89
let c = 1;
910

1011
// Create broker
@@ -18,32 +19,39 @@ const broker = new ServiceBroker({
1819
adapter: process.env.ADAPTER || "redis://localhost:6379"
1920
})
2021
],
21-
replCommands: [
22-
{
23-
command: "publish",
24-
alias: ["p"],
25-
async action(broker, args) {
26-
const payload = {
27-
id: 2,
28-
name: "Jane Doe",
29-
status: false,
30-
count: ++c,
31-
pid: process.pid
32-
};
22+
replOptions: {
23+
customCommands: [
24+
{
25+
command: "publish",
26+
alias: ["p"],
27+
async action(broker, args) {
28+
const payload = {
29+
id: 2,
30+
name: "Jane Doe",
31+
status: false,
32+
count: ++c,
33+
pid: process.pid
34+
};
3335

34-
await broker.sendToChannel("my.fail.topic", payload, { key: "" + c });
36+
await broker.sendToChannel("my.fail.topic", payload, {
37+
key: "" + c,
38+
headers: { a: "123" }
39+
});
40+
}
3541
}
36-
}
37-
]
42+
]
43+
}
3844
});
3945

4046
broker.createService({
4147
name: "sub1",
4248
channels: {
4349
"my.fail.topic": {
4450
group: "failgroup",
45-
minIdleTime: 1000,
46-
claimInterval: 500,
51+
redis: {
52+
minIdleTime: 1000,
53+
claimInterval: 500
54+
},
4755
maxRetries: 3,
4856
deadLettering: {
4957
enabled: true,
@@ -52,11 +60,21 @@ broker.createService({
5260
},
5361
handler() {
5462
this.logger.error("Ups! Something happened");
55-
return Promise.reject(new Error("Something happened"));
63+
return Promise.reject(
64+
new MoleculerError("Something happened", 123, "SOMETHING_ERROR", {
65+
errorInfo: "Additional error information",
66+
someOtherErrorData: 456,
67+
anotherErrorField: true,
68+
finalField: null,
69+
nested: { a: 1, b: "two", c: false }
70+
})
71+
);
5672
}
5773
}
5874
}
5975
});
76+
77+
/**
6078
broker.createService({
6179
name: "sub2",
6280
channels: {
@@ -68,15 +86,20 @@ broker.createService({
6886
}
6987
}
7088
});
89+
*/
7190

7291
broker.createService({
7392
name: "sub3",
7493
channels: {
7594
DEAD_LETTER: {
95+
context: true,
7696
group: "failgroup",
77-
handler(msg, raw) {
78-
this.logger.info("--> FAILED HANDLER <--");
79-
this.logger.info(msg);
97+
handler(ctx, raw) {
98+
this.logger.info("--> FAILED HANDLER PARAMS <--");
99+
this.logger.info(ctx.params);
100+
this.logger.info("--> FAILED HANDLER HEADERS <--");
101+
this.logger.info(ctx.headers);
102+
80103
// Send a notification about the failure
81104

82105
this.logger.info("--> RAW (ENTIRE) MESSAGE <--");

0 commit comments

Comments
 (0)