@stevepic95/rabbitmq-masstransit-mcp 1.0.0
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/LICENSE +21 -0
- package/README.md +176 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/masstransit.d.ts +18 -0
- package/dist/masstransit.d.ts.map +1 -0
- package/dist/masstransit.js +203 -0
- package/dist/masstransit.js.map +1 -0
- package/dist/rabbitmq-client.d.ts +29 -0
- package/dist/rabbitmq-client.d.ts.map +1 -0
- package/dist/rabbitmq-client.js +123 -0
- package/dist/rabbitmq-client.js.map +1 -0
- package/dist/tools/connections.d.ts +4 -0
- package/dist/tools/connections.d.ts.map +1 -0
- package/dist/tools/connections.js +42 -0
- package/dist/tools/connections.js.map +1 -0
- package/dist/tools/exchanges.d.ts +4 -0
- package/dist/tools/exchanges.d.ts.map +1 -0
- package/dist/tools/exchanges.js +109 -0
- package/dist/tools/exchanges.js.map +1 -0
- package/dist/tools/masstransit.d.ts +4 -0
- package/dist/tools/masstransit.d.ts.map +1 -0
- package/dist/tools/masstransit.js +295 -0
- package/dist/tools/masstransit.js.map +1 -0
- package/dist/tools/messages.d.ts +4 -0
- package/dist/tools/messages.d.ts.map +1 -0
- package/dist/tools/messages.js +145 -0
- package/dist/tools/messages.js.map +1 -0
- package/dist/tools/overview.d.ts +4 -0
- package/dist/tools/overview.d.ts.map +1 -0
- package/dist/tools/overview.js +32 -0
- package/dist/tools/overview.js.map +1 -0
- package/dist/tools/queues.d.ts +4 -0
- package/dist/tools/queues.d.ts.map +1 -0
- package/dist/tools/queues.js +121 -0
- package/dist/tools/queues.js.map +1 -0
- package/dist/types.d.ts +195 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +47 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 StevePic95
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# RabbitMQ MassTransit MCP Server
|
|
2
|
+
|
|
3
|
+
An MCP (Model Context Protocol) server for RabbitMQ with **MassTransit intelligence** — error queue parsing, fault analysis, and message republishing.
|
|
4
|
+
|
|
5
|
+
Built for teams debugging async messaging issues across .NET microservices. Goes beyond basic queue management by understanding MassTransit conventions: `_error`/`_skipped` queues, the message envelope format, and fault message parsing.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- **18 tools** for complete RabbitMQ management via Claude Code
|
|
10
|
+
- **MassTransit-aware**: Automatically detects and parses `_error`/`_skipped` queues, fault envelopes, and message type URNs
|
|
11
|
+
- **Parsed error output**: Exception types, messages, stack traces, and original payloads — not raw JSON dumps
|
|
12
|
+
- **Republish from error**: The killer feature — fetch faulted messages and republish them for reprocessing
|
|
13
|
+
- **Safe defaults**: Mutative tools disabled by default, two-step confirmation for destructive operations
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx @stevepic95/rabbitmq-masstransit-mcp
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Claude Code Configuration
|
|
22
|
+
|
|
23
|
+
Add to your `.claude.json` under `mcpServers`:
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"mcpServers": {
|
|
28
|
+
"rabbitmq": {
|
|
29
|
+
"command": "npx",
|
|
30
|
+
"args": ["-y", "@stevepic95/rabbitmq-masstransit-mcp"],
|
|
31
|
+
"env": {
|
|
32
|
+
"RABBITMQ_HOST": "your-rabbitmq-host",
|
|
33
|
+
"RABBITMQ_PORT": "15672",
|
|
34
|
+
"RABBITMQ_USERNAME": "your-username",
|
|
35
|
+
"RABBITMQ_PASSWORD": "your-password",
|
|
36
|
+
"RABBITMQ_VHOST": "/",
|
|
37
|
+
"RABBITMQ_SSL": "false",
|
|
38
|
+
"ALLOW_MUTATIVE_TOOLS": "false"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
For local development:
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"mcpServers": {
|
|
50
|
+
"rabbitmq": {
|
|
51
|
+
"command": "node",
|
|
52
|
+
"args": ["/path/to/rabbitmq-masstransit-mcp/dist/index.js"],
|
|
53
|
+
"env": {
|
|
54
|
+
"RABBITMQ_HOST": "localhost",
|
|
55
|
+
"RABBITMQ_USERNAME": "guest",
|
|
56
|
+
"RABBITMQ_PASSWORD": "guest"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Configuration
|
|
64
|
+
|
|
65
|
+
| Variable | Required | Default | Description |
|
|
66
|
+
|----------|----------|---------|-------------|
|
|
67
|
+
| `RABBITMQ_HOST` | Yes | — | RabbitMQ Management API hostname |
|
|
68
|
+
| `RABBITMQ_PORT` | No | `15672` | Management API port |
|
|
69
|
+
| `RABBITMQ_USERNAME` | Yes | — | Authentication username |
|
|
70
|
+
| `RABBITMQ_PASSWORD` | Yes | — | Authentication password |
|
|
71
|
+
| `RABBITMQ_VHOST` | No | `/` | Default virtual host |
|
|
72
|
+
| `RABBITMQ_SSL` | No | `false` | Use HTTPS for Management API |
|
|
73
|
+
| `ALLOW_MUTATIVE_TOOLS` | No | `false` | Enable mutative tools (purge, delete, publish, republish, move) |
|
|
74
|
+
|
|
75
|
+
You can also enable mutative tools via CLI flag: `--allow-mutative-tools`
|
|
76
|
+
|
|
77
|
+
## Tools
|
|
78
|
+
|
|
79
|
+
### Read-Only (13 tools) — Always available
|
|
80
|
+
|
|
81
|
+
| Tool | Description |
|
|
82
|
+
|------|-------------|
|
|
83
|
+
| `get_overview` | Cluster stats: queue totals, connection counts, message rates |
|
|
84
|
+
| `list_queues` | List queues with depth, consumer count, rates. Filter by vhost, name pattern |
|
|
85
|
+
| `get_queue` | Detailed queue stats: depth, rates, consumers, memory, policy |
|
|
86
|
+
| `list_exchanges` | List exchanges. Filter by vhost, type |
|
|
87
|
+
| `get_exchange` | Exchange details and bindings |
|
|
88
|
+
| `list_bindings` | List bindings for a queue or exchange |
|
|
89
|
+
| `list_connections` | Active connections with client info |
|
|
90
|
+
| `list_consumers` | Active consumers with queue assignments |
|
|
91
|
+
| `peek_messages` | Browse messages without consuming (non-destructive) |
|
|
92
|
+
| `list_error_queues` | Find all `_error` queues with message counts |
|
|
93
|
+
| `list_skipped_queues` | Find all `_skipped` queues with message counts |
|
|
94
|
+
| `peek_errors` | Browse error queue messages with **parsed fault details** |
|
|
95
|
+
| `get_queue_health` | Quick health check: no consumers, growing depth, high error counts |
|
|
96
|
+
|
|
97
|
+
### Mutative (5 tools) — Require `ALLOW_MUTATIVE_TOOLS=true`
|
|
98
|
+
|
|
99
|
+
| Tool | Description |
|
|
100
|
+
|------|-------------|
|
|
101
|
+
| `purge_queue` | Purge all messages from a queue |
|
|
102
|
+
| `delete_queue` | Delete a queue |
|
|
103
|
+
| `publish_message` | Publish a message to an exchange |
|
|
104
|
+
| `republish_from_error` | Republish faulted messages from `_error` queue to original exchange |
|
|
105
|
+
| `move_messages` | Move messages from one queue to another |
|
|
106
|
+
|
|
107
|
+
## MassTransit Intelligence
|
|
108
|
+
|
|
109
|
+
### Error Queue Parsing
|
|
110
|
+
|
|
111
|
+
`peek_errors` doesn't just dump raw JSON — it parses MassTransit fault envelopes into readable output:
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
Queue: submit-order_error (3 messages)
|
|
115
|
+
|
|
116
|
+
Message 1:
|
|
117
|
+
Faulted: 2026-02-15T14:30:05Z
|
|
118
|
+
Original MessageId: 5fdc0000-426e-001c-fcf9-08d9a30339e8
|
|
119
|
+
Message Type: MyApp.Messages.OrderSubmitted
|
|
120
|
+
Exception: System.InvalidOperationException - "Order validation failed"
|
|
121
|
+
Stack Trace:
|
|
122
|
+
at MyApp.Consumers.OrderConsumer.Consume(ConsumeContext`1 context)
|
|
123
|
+
at MassTransit.Middleware.ConsumerMessageFilter`2.Send(...)
|
|
124
|
+
Original Payload: { "orderId": "abc-123", ... }
|
|
125
|
+
Source Host: WEBSERVER01 / OrderService (PID 12345)
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Republish from Error (Two-Step)
|
|
129
|
+
|
|
130
|
+
The highest-value tool for debugging. First call previews the messages:
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
> republish_from_error(errorQueue: "submit-order_error", count: 3)
|
|
134
|
+
|
|
135
|
+
Preview: 3 message(s) from "submit-order_error" ready to republish:
|
|
136
|
+
[... parsed fault details ...]
|
|
137
|
+
|
|
138
|
+
To republish these messages, call again with confirm=true and count=3.
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Second call with `confirm: true` actually consumes and republishes:
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
> republish_from_error(errorQueue: "submit-order_error", count: 3, confirm: true)
|
|
145
|
+
|
|
146
|
+
Republished 3/3 message(s) from "submit-order_error".
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Queue Health Check
|
|
150
|
+
|
|
151
|
+
Quick overview of potential issues across all queues:
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
> get_queue_health()
|
|
155
|
+
|
|
156
|
+
⚠ Queues with NO consumers and messages (2):
|
|
157
|
+
order-processing — 150 message(s)
|
|
158
|
+
notification-sender — 42 message(s)
|
|
159
|
+
|
|
160
|
+
✗ Error queues with messages (3 queues, 89 total):
|
|
161
|
+
submit-order_error — 45 message(s)
|
|
162
|
+
payment-process_error — 32 message(s)
|
|
163
|
+
email-send_error — 12 message(s)
|
|
164
|
+
|
|
165
|
+
△ High depth queues (>1000 messages, 1):
|
|
166
|
+
analytics-events — 15234 message(s), 2 consumer(s)
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Requirements
|
|
170
|
+
|
|
171
|
+
- Node.js >= 18.0.0
|
|
172
|
+
- RabbitMQ with Management Plugin enabled (port 15672)
|
|
173
|
+
|
|
174
|
+
## License
|
|
175
|
+
|
|
176
|
+
MIT
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
+
import { RabbitMQClient } from "./rabbitmq-client.js";
|
|
5
|
+
import { registerOverviewTools } from "./tools/overview.js";
|
|
6
|
+
import { registerQueueTools } from "./tools/queues.js";
|
|
7
|
+
import { registerExchangeTools } from "./tools/exchanges.js";
|
|
8
|
+
import { registerMessageTools } from "./tools/messages.js";
|
|
9
|
+
import { registerConnectionTools } from "./tools/connections.js";
|
|
10
|
+
import { registerMassTransitTools } from "./tools/masstransit.js";
|
|
11
|
+
function getConfig() {
|
|
12
|
+
const host = process.env.RABBITMQ_HOST;
|
|
13
|
+
if (!host) {
|
|
14
|
+
console.error("RABBITMQ_HOST environment variable is required");
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
const username = process.env.RABBITMQ_USERNAME;
|
|
18
|
+
if (!username) {
|
|
19
|
+
console.error("RABBITMQ_USERNAME environment variable is required");
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
const password = process.env.RABBITMQ_PASSWORD;
|
|
23
|
+
if (!password) {
|
|
24
|
+
console.error("RABBITMQ_PASSWORD environment variable is required");
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
const allowMutative = process.env.ALLOW_MUTATIVE_TOOLS === "true" ||
|
|
28
|
+
process.argv.includes("--allow-mutative-tools");
|
|
29
|
+
return {
|
|
30
|
+
host,
|
|
31
|
+
port: parseInt(process.env.RABBITMQ_PORT ?? "15672", 10),
|
|
32
|
+
username,
|
|
33
|
+
password,
|
|
34
|
+
vhost: process.env.RABBITMQ_VHOST ?? "/",
|
|
35
|
+
ssl: process.env.RABBITMQ_SSL === "true",
|
|
36
|
+
allowMutativeTools: allowMutative,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
async function main() {
|
|
40
|
+
const config = getConfig();
|
|
41
|
+
const client = new RabbitMQClient(config);
|
|
42
|
+
const server = new McpServer({
|
|
43
|
+
name: "rabbitmq-masstransit",
|
|
44
|
+
version: "1.0.0",
|
|
45
|
+
});
|
|
46
|
+
// Register all tools
|
|
47
|
+
registerOverviewTools(server, client);
|
|
48
|
+
registerQueueTools(server, client, config.allowMutativeTools);
|
|
49
|
+
registerExchangeTools(server, client);
|
|
50
|
+
registerMessageTools(server, client, config.allowMutativeTools);
|
|
51
|
+
registerConnectionTools(server, client);
|
|
52
|
+
registerMassTransitTools(server, client, config.allowMutativeTools);
|
|
53
|
+
// Connect via stdio
|
|
54
|
+
const transport = new StdioServerTransport();
|
|
55
|
+
await server.connect(transport);
|
|
56
|
+
console.error(`RabbitMQ MassTransit MCP server running (${config.host}:${config.port}, vhost: ${config.vhost}, mutative tools: ${config.allowMutativeTools ? "enabled" : "disabled"})`);
|
|
57
|
+
}
|
|
58
|
+
main().catch((err) => {
|
|
59
|
+
console.error("Fatal error:", err);
|
|
60
|
+
process.exit(1);
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { MassTransitEnvelope, MassTransitFault, PeekedMessage } from "./types.js";
|
|
2
|
+
export declare function isErrorQueue(name: string): boolean;
|
|
3
|
+
export declare function isSkippedQueue(name: string): boolean;
|
|
4
|
+
export declare function getSourceQueue(errorQueueName: string): string;
|
|
5
|
+
/**
|
|
6
|
+
* Convert MassTransit message type URN to readable name.
|
|
7
|
+
* e.g. "urn:message:MyApp.Messages:OrderSubmitted" -> "MyApp.Messages.OrderSubmitted"
|
|
8
|
+
*/
|
|
9
|
+
export declare function getMessageTypeName(urn: string): string;
|
|
10
|
+
export declare function parseEnvelope(payload: string): MassTransitEnvelope | null;
|
|
11
|
+
/**
|
|
12
|
+
* Parse fault info from MT-Fault-* headers that MassTransit adds
|
|
13
|
+
* when moving a message to the _error queue.
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseFaultFromHeaders(headers: Record<string, unknown>): MassTransitFault | null;
|
|
16
|
+
export declare function parseFault(payload: string): MassTransitFault | null;
|
|
17
|
+
export declare function formatFaultMessage(msg: PeekedMessage, index: number): string;
|
|
18
|
+
//# sourceMappingURL=masstransit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"masstransit.d.ts","sourceRoot":"","sources":["../src/masstransit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAEhB,aAAa,EACd,MAAM,YAAY,CAAC;AAKpB,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAQ7D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,GACd,mBAAmB,GAAG,IAAI,CAU5B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,gBAAgB,GAAG,IAAI,CAmCzB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CA0BnE;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,MAAM,GACZ,MAAM,CAuHR"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
const ERROR_SUFFIX = "_error";
|
|
2
|
+
const SKIPPED_SUFFIX = "_skipped";
|
|
3
|
+
export function isErrorQueue(name) {
|
|
4
|
+
return name.endsWith(ERROR_SUFFIX);
|
|
5
|
+
}
|
|
6
|
+
export function isSkippedQueue(name) {
|
|
7
|
+
return name.endsWith(SKIPPED_SUFFIX);
|
|
8
|
+
}
|
|
9
|
+
export function getSourceQueue(errorQueueName) {
|
|
10
|
+
if (errorQueueName.endsWith(ERROR_SUFFIX)) {
|
|
11
|
+
return errorQueueName.slice(0, -ERROR_SUFFIX.length);
|
|
12
|
+
}
|
|
13
|
+
if (errorQueueName.endsWith(SKIPPED_SUFFIX)) {
|
|
14
|
+
return errorQueueName.slice(0, -SKIPPED_SUFFIX.length);
|
|
15
|
+
}
|
|
16
|
+
return errorQueueName;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Convert MassTransit message type URN to readable name.
|
|
20
|
+
* e.g. "urn:message:MyApp.Messages:OrderSubmitted" -> "MyApp.Messages.OrderSubmitted"
|
|
21
|
+
*/
|
|
22
|
+
export function getMessageTypeName(urn) {
|
|
23
|
+
if (!urn.startsWith("urn:message:"))
|
|
24
|
+
return urn;
|
|
25
|
+
return urn.slice("urn:message:".length).replace(/:/g, ".");
|
|
26
|
+
}
|
|
27
|
+
export function parseEnvelope(payload) {
|
|
28
|
+
try {
|
|
29
|
+
const parsed = JSON.parse(payload);
|
|
30
|
+
if (parsed && (parsed.messageType || parsed.messageId || parsed.message)) {
|
|
31
|
+
return parsed;
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Parse fault info from MT-Fault-* headers that MassTransit adds
|
|
41
|
+
* when moving a message to the _error queue.
|
|
42
|
+
*/
|
|
43
|
+
export function parseFaultFromHeaders(headers) {
|
|
44
|
+
const reason = headers["MT-Reason"];
|
|
45
|
+
const exceptionType = headers["MT-Fault-ExceptionType"];
|
|
46
|
+
const faultMessage = headers["MT-Fault-Message"];
|
|
47
|
+
if (!reason && !exceptionType)
|
|
48
|
+
return null;
|
|
49
|
+
return {
|
|
50
|
+
faultedMessageId: undefined,
|
|
51
|
+
timestamp: headers["MT-Fault-Timestamp"],
|
|
52
|
+
consumerType: headers["MT-Fault-ConsumerType"],
|
|
53
|
+
inputAddress: headers["MT-Fault-InputAddress"],
|
|
54
|
+
messageType: headers["MT-Fault-MessageType"],
|
|
55
|
+
retryCount: headers["MT-Fault-RetryCount"],
|
|
56
|
+
reason: reason,
|
|
57
|
+
exceptions: exceptionType
|
|
58
|
+
? [
|
|
59
|
+
{
|
|
60
|
+
exceptionType,
|
|
61
|
+
message: faultMessage,
|
|
62
|
+
stackTrace: headers["MT-Fault-StackTrace"],
|
|
63
|
+
},
|
|
64
|
+
]
|
|
65
|
+
: undefined,
|
|
66
|
+
host: {
|
|
67
|
+
machineName: headers["MT-Host-MachineName"],
|
|
68
|
+
processName: headers["MT-Host-ProcessName"],
|
|
69
|
+
processId: headers["MT-Host-ProcessId"],
|
|
70
|
+
assembly: headers["MT-Host-Assembly"],
|
|
71
|
+
assemblyVersion: headers["MT-Host-AssemblyVersion"],
|
|
72
|
+
frameworkVersion: headers["MT-Host-FrameworkVersion"],
|
|
73
|
+
massTransitVersion: headers["MT-Host-MassTransitVersion"],
|
|
74
|
+
operatingSystemVersion: headers["MT-Host-OperatingSystemVersion"],
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
export function parseFault(payload) {
|
|
79
|
+
try {
|
|
80
|
+
const envelope = JSON.parse(payload);
|
|
81
|
+
if (!envelope.message)
|
|
82
|
+
return null;
|
|
83
|
+
const msg = envelope.message;
|
|
84
|
+
// MassTransit Fault<T> messages have an exceptions array in the message payload
|
|
85
|
+
if (msg.exceptions &&
|
|
86
|
+
Array.isArray(msg.exceptions) &&
|
|
87
|
+
msg.exceptions.length > 0) {
|
|
88
|
+
return {
|
|
89
|
+
faultId: msg.faultId,
|
|
90
|
+
faultedMessageId: msg.faultedMessageId,
|
|
91
|
+
timestamp: envelope.sentTime ?? msg.timestamp,
|
|
92
|
+
exceptions: msg.exceptions,
|
|
93
|
+
message: msg.message,
|
|
94
|
+
host: envelope.host,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
export function formatFaultMessage(msg, index) {
|
|
104
|
+
const headers = msg.properties.headers ?? {};
|
|
105
|
+
const headerFault = parseFaultFromHeaders(headers);
|
|
106
|
+
const bodyFault = parseFault(msg.payload);
|
|
107
|
+
const envelope = parseEnvelope(msg.payload);
|
|
108
|
+
// Prefer header-based fault info (this is where MassTransit puts it on _error queues)
|
|
109
|
+
if (headerFault) {
|
|
110
|
+
const ex = headerFault.exceptions?.[0];
|
|
111
|
+
const messageType = headerFault.messageType ?? (envelope?.messageType
|
|
112
|
+
? envelope.messageType.map(getMessageTypeName).join(", ")
|
|
113
|
+
: "unknown");
|
|
114
|
+
const host = headerFault.host;
|
|
115
|
+
const hostInfo = host
|
|
116
|
+
? `${host.machineName ?? "unknown"} / ${host.processName ?? "unknown"} (PID ${host.processId ?? "?"})`
|
|
117
|
+
: "unknown";
|
|
118
|
+
const lines = [
|
|
119
|
+
`Message ${index + 1}:`,
|
|
120
|
+
` Faulted: ${headerFault.timestamp ?? "unknown"}`,
|
|
121
|
+
` Reason: ${headerFault.reason ?? "fault"}`,
|
|
122
|
+
` Message Type: ${messageType}`,
|
|
123
|
+
];
|
|
124
|
+
if (headerFault.consumerType) {
|
|
125
|
+
lines.push(` Consumer: ${headerFault.consumerType}`);
|
|
126
|
+
}
|
|
127
|
+
if (ex) {
|
|
128
|
+
lines.push(` Exception: ${ex.exceptionType ?? "unknown"} - "${ex.message ?? "unknown"}"`);
|
|
129
|
+
}
|
|
130
|
+
if (headerFault.retryCount !== undefined) {
|
|
131
|
+
lines.push(` Retry Count: ${headerFault.retryCount}`);
|
|
132
|
+
}
|
|
133
|
+
if (ex?.stackTrace) {
|
|
134
|
+
const stackLines = ex.stackTrace.split("\n").slice(0, 8);
|
|
135
|
+
lines.push(` Stack Trace:\n${stackLines.map((l) => ` ${l.trim()}`).join("\n")}`);
|
|
136
|
+
}
|
|
137
|
+
// Show the original message payload from the body
|
|
138
|
+
if (envelope?.message) {
|
|
139
|
+
const payloadStr = JSON.stringify(envelope.message, null, 2);
|
|
140
|
+
const truncated = payloadStr.length > 500
|
|
141
|
+
? payloadStr.slice(0, 500) + "\n ... (truncated)"
|
|
142
|
+
: payloadStr;
|
|
143
|
+
lines.push(` Original Payload: ${truncated}`);
|
|
144
|
+
}
|
|
145
|
+
lines.push(` Source Host: ${hostInfo}`);
|
|
146
|
+
if (host?.assembly && host?.assemblyVersion) {
|
|
147
|
+
lines.push(` Assembly: ${host.assembly} v${host.assemblyVersion} (.NET ${host.frameworkVersion ?? "?"})`);
|
|
148
|
+
}
|
|
149
|
+
return lines.join("\n");
|
|
150
|
+
}
|
|
151
|
+
// Fallback: body-based Fault<T> envelope parsing
|
|
152
|
+
if (bodyFault) {
|
|
153
|
+
const ex = bodyFault.exceptions?.[0];
|
|
154
|
+
const messageTypes = envelope?.messageType
|
|
155
|
+
? envelope.messageType.map(getMessageTypeName)
|
|
156
|
+
: [];
|
|
157
|
+
const host = bodyFault.host;
|
|
158
|
+
const hostInfo = host
|
|
159
|
+
? `${host.machineName ?? "unknown"} / ${host.processName ?? "unknown"} (PID ${host.processId ?? "?"})`
|
|
160
|
+
: "unknown";
|
|
161
|
+
const lines = [
|
|
162
|
+
`Message ${index + 1}:`,
|
|
163
|
+
` Faulted: ${bodyFault.timestamp ?? "unknown"}`,
|
|
164
|
+
` Original MessageId: ${bodyFault.faultedMessageId ?? "unknown"}`,
|
|
165
|
+
` Message Type: ${messageTypes.length > 0 ? messageTypes.join(", ") : "unknown"}`,
|
|
166
|
+
` Exception: ${ex?.exceptionType ?? "unknown"} - "${ex?.message ?? "unknown"}"`,
|
|
167
|
+
];
|
|
168
|
+
if (ex?.stackTrace) {
|
|
169
|
+
const stackLines = ex.stackTrace.split("\n").slice(0, 8);
|
|
170
|
+
lines.push(` Stack Trace:\n${stackLines.map((l) => ` ${l.trim()}`).join("\n")}`);
|
|
171
|
+
}
|
|
172
|
+
if (bodyFault.message) {
|
|
173
|
+
const payloadStr = JSON.stringify(bodyFault.message, null, 2);
|
|
174
|
+
const truncated = payloadStr.length > 500
|
|
175
|
+
? payloadStr.slice(0, 500) + "\n ... (truncated)"
|
|
176
|
+
: payloadStr;
|
|
177
|
+
lines.push(` Original Payload: ${truncated}`);
|
|
178
|
+
}
|
|
179
|
+
lines.push(` Source Host: ${hostInfo}`);
|
|
180
|
+
return lines.join("\n");
|
|
181
|
+
}
|
|
182
|
+
// Fallback: plain MassTransit envelope (no fault info found)
|
|
183
|
+
if (envelope) {
|
|
184
|
+
const messageTypes = envelope.messageType
|
|
185
|
+
? envelope.messageType.map(getMessageTypeName)
|
|
186
|
+
: [];
|
|
187
|
+
return [
|
|
188
|
+
`Message ${index + 1}:`,
|
|
189
|
+
` MessageId: ${envelope.messageId ?? "unknown"}`,
|
|
190
|
+
` Sent: ${envelope.sentTime ?? "unknown"}`,
|
|
191
|
+
` Message Type: ${messageTypes.length > 0 ? messageTypes.join(", ") : "unknown"}`,
|
|
192
|
+
` Payload: ${JSON.stringify(envelope.message ?? {}, null, 2).slice(0, 500)}`,
|
|
193
|
+
].join("\n");
|
|
194
|
+
}
|
|
195
|
+
// Raw message fallback
|
|
196
|
+
return [
|
|
197
|
+
`Message ${index + 1}:`,
|
|
198
|
+
` Exchange: ${msg.exchange}`,
|
|
199
|
+
` Routing Key: ${msg.routing_key}`,
|
|
200
|
+
` Payload: ${msg.payload.slice(0, 500)}`,
|
|
201
|
+
].join("\n");
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=masstransit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"masstransit.js","sourceRoot":"","sources":["../src/masstransit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { RabbitMQConfig, QueueInfo, ExchangeInfo, BindingInfo, ConnectionInfo, ConsumerInfo, OverviewInfo, PeekedMessage } from "./types.js";
|
|
2
|
+
export declare class RabbitMQClient {
|
|
3
|
+
private config;
|
|
4
|
+
private baseUrl;
|
|
5
|
+
private authHeader;
|
|
6
|
+
constructor(config: RabbitMQConfig);
|
|
7
|
+
private encodeVhost;
|
|
8
|
+
private request;
|
|
9
|
+
private get;
|
|
10
|
+
private post;
|
|
11
|
+
private del;
|
|
12
|
+
getOverview(): Promise<OverviewInfo>;
|
|
13
|
+
listQueues(vhost?: string): Promise<QueueInfo[]>;
|
|
14
|
+
getQueue(name: string, vhost?: string): Promise<QueueInfo>;
|
|
15
|
+
purgeQueue(name: string, vhost?: string): Promise<void>;
|
|
16
|
+
deleteQueue(name: string, vhost?: string): Promise<void>;
|
|
17
|
+
listExchanges(vhost?: string): Promise<ExchangeInfo[]>;
|
|
18
|
+
getExchange(name: string, vhost?: string): Promise<ExchangeInfo>;
|
|
19
|
+
listBindingsForQueue(queue: string, vhost?: string): Promise<BindingInfo[]>;
|
|
20
|
+
listBindingsForExchange(exchange: string, type: "source" | "destination", vhost?: string): Promise<BindingInfo[]>;
|
|
21
|
+
listConnections(): Promise<ConnectionInfo[]>;
|
|
22
|
+
listConsumers(vhost?: string): Promise<ConsumerInfo[]>;
|
|
23
|
+
peekMessages(queue: string, count?: number, vhost?: string, ackMode?: string): Promise<PeekedMessage[]>;
|
|
24
|
+
publishMessage(exchange: string, routingKey: string, payload: string, properties?: Record<string, unknown>, vhost?: string): Promise<{
|
|
25
|
+
routed: boolean;
|
|
26
|
+
}>;
|
|
27
|
+
consumeMessages(queue: string, count?: number, vhost?: string): Promise<PeekedMessage[]>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=rabbitmq-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rabbitmq-client.d.ts","sourceRoot":"","sources":["../src/rabbitmq-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,YAAY,EACZ,WAAW,EACX,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,qBAAa,cAAc;IAIb,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;gBAEP,MAAM,EAAE,cAAc;IAQ1C,OAAO,CAAC,WAAW;YAKL,OAAO;YA+BP,GAAG;YAIH,IAAI;YAIJ,GAAG;IAKX,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC;IAKpC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAShD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAM1D,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxD,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAStD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAOhE,oBAAoB,CACxB,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,EAAE,CAAC;IAMnB,uBAAuB,CAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,QAAQ,GAAG,aAAa,EAC9B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,EAAE,CAAC;IAOnB,eAAe,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAI5C,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAUtD,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAU,EACjB,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,GAAE,MAA2B,GACnC,OAAO,CAAC,aAAa,EAAE,CAAC;IAYrB,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACxC,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAgBzB,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAU,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,EAAE,CAAC;CAW5B"}
|