From 40c387b205e7602524361b662c1980b442a8728b Mon Sep 17 00:00:00 2001 From: Fawzi Abdulfattah Date: Sun, 10 May 2026 04:06:33 +0200 Subject: [PATCH 1/6] docs: add usePublisherConfirms to README connection config table MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reflects the 2.x publisher confirms default in the README's reference table — the Quick Start prose already covered it but the table did not. Co-Authored-By: Claude Opus 4.7 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 997d369..4dc5097 100644 --- a/README.md +++ b/README.md @@ -263,6 +263,7 @@ This is the hook you want when you're piping logs into Winston, Bunyan, Datadog, | `url` | `string` | — | The URL of the RabbitMQ server. | | `reconnectDelay` | `number` | `5000` | Delay in milliseconds before attempting to reconnect after a disconnection. | | `maxReconnectAttempts` | `number` | `5` | Maximum number of reconnection attempts. | +| `usePublisherConfirms` | `boolean` | `true` | Enable RabbitMQ publisher confirms on the user publish channel. When `true`, `publish()` resolves only after the broker acks the message and rejects on broker error. Set to `false` for fire-and-forget publishing. _Available in 2.x._ | | `management` | `ManagementConfiguration` | — | RabbitMQ management API configuration. | --- From cbe6f7ce0b3534fddabdf327e9b964def9fd6d47 Mon Sep 17 00:00:00 2001 From: Fawzi Abdulfattah Date: Sun, 10 May 2026 04:10:52 +0200 Subject: [PATCH 2/6] ci: add Node 16/18/20/22/24 matrix to multi-version tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Expands the existing RabbitMQ-version matrix with a Node.js axis so every supported Node version (16 — the new floor — through 24) runs the full unit + e2e suite against every supported broker version, all in parallel. fail-fast stays off so one bad combo doesn't mask others. Co-Authored-By: Claude Opus 4.7 --- .github/workflows/test-multi-version.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-multi-version.yml b/.github/workflows/test-multi-version.yml index 7b4da71..bb8f656 100644 --- a/.github/workflows/test-multi-version.yml +++ b/.github/workflows/test-multi-version.yml @@ -12,6 +12,7 @@ jobs: strategy: fail-fast: false matrix: + node-version: ['16', '18', '20', '22', '24'] rabbitmq-version: - "3.9-management" - "3.10-management" @@ -20,16 +21,16 @@ jobs: - "3.13-management" - "4.0-management" - "4.1-management" - - name: Test RabbitMQ ${{ matrix.rabbitmq-version }} - + + name: Node ${{ matrix.node-version }} · RabbitMQ ${{ matrix.rabbitmq-version }} + steps: - uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: '22' + node-version: ${{ matrix.node-version }} - name: Install dependencies run: npm install From 72e455ea7b83f2fcb88548b8003c9c2bd86c6a0a Mon Sep 17 00:00:00 2001 From: Fawzi Abdulfattah Date: Sun, 10 May 2026 04:11:18 +0200 Subject: [PATCH 3/6] ci: add RabbitMQ 4.2 and 4.3 to test matrix Co-Authored-By: Claude Opus 4.7 --- .github/workflows/test-multi-version.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test-multi-version.yml b/.github/workflows/test-multi-version.yml index bb8f656..e3189e3 100644 --- a/.github/workflows/test-multi-version.yml +++ b/.github/workflows/test-multi-version.yml @@ -21,6 +21,8 @@ jobs: - "3.13-management" - "4.0-management" - "4.1-management" + - "4.2-management" + - "4.3-management" name: Node ${{ matrix.node-version }} · RabbitMQ ${{ matrix.rabbitmq-version }} From b2d5c275c9aa2c4a7845ece799a24e48edb90b2a Mon Sep 17 00:00:00 2001 From: Fawzi Abdulfattah Date: Sun, 10 May 2026 04:11:51 +0200 Subject: [PATCH 4/6] ci: limit PR matrix to Node 22; main runs full Node matrix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PRs now run a single Node version (22) across the full RabbitMQ matrix to keep PR feedback cheap and fast. Pushes to main keep the full Node 16/18/20/22/24 × RabbitMQ matrix. Co-Authored-By: Claude Opus 4.7 --- .github/workflows/test-multi-version.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-multi-version.yml b/.github/workflows/test-multi-version.yml index e3189e3..f675cc4 100644 --- a/.github/workflows/test-multi-version.yml +++ b/.github/workflows/test-multi-version.yml @@ -12,7 +12,7 @@ jobs: strategy: fail-fast: false matrix: - node-version: ['16', '18', '20', '22', '24'] + node-version: ${{ github.event_name == 'pull_request' && fromJSON('["22"]') || fromJSON('["16", "18", "20", "22", "24"]') }} rabbitmq-version: - "3.9-management" - "3.10-management" From ed252612abba4e4a856a94b8e5b2982093ed6b05 Mon Sep 17 00:00:00 2001 From: Fawzi Abdulfattah Date: Sun, 10 May 2026 04:21:37 +0200 Subject: [PATCH 5/6] test: deflake resubscribe e2e under parallel-suite load MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bump the waitForConsumers timeout in closeConnectionsForQueue from 5s to 20s. The management /api/consumers endpoint is backed by the stats collector, which lags under load when all 12 e2e suites run in parallel — the consumer exists on the broker (the prior message was received) but isn't yet visible via the management API within 5s. Mirrors the timeout already used by waitForFreshConsumer. Co-Authored-By: Claude Opus 4.7 --- tests/e2e/RunMQ.resubscribe.e2e.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/RunMQ.resubscribe.e2e.test.ts b/tests/e2e/RunMQ.resubscribe.e2e.test.ts index da5fe2b..819ec48 100644 --- a/tests/e2e/RunMQ.resubscribe.e2e.test.ts +++ b/tests/e2e/RunMQ.resubscribe.e2e.test.ts @@ -124,7 +124,7 @@ describe('RunMQ Consumer Channel Resubscription E2E', () => { // Force-close only the connection(s) holding consumers for our queue. // Scoping by queue avoids killing unrelated parallel-test connections. - const {closed, consumerTags} = await closeConnectionsForQueue(configuration.name, 5000); + const {closed, consumerTags} = await closeConnectionsForQueue(configuration.name, 20000); expect(closed.size).toBeGreaterThan(0); // Wait until a NEW consumer (different tag from the one we killed) is From 2a204df4d7a59602da1d76b9728ad59ab039093b Mon Sep 17 00:00:00 2001 From: Fawzi Abdulfattah Date: Sun, 10 May 2026 04:29:16 +0200 Subject: [PATCH 6/6] ci: pin jest to v29 to keep node 16 supported Jest 30 calls os.availableParallelism() (added in Node 18.14), breaking the Node 16 leg of the matrix. Pin jest and @types/jest to v29 so the full matrix passes. Co-Authored-By: Claude Opus 4.7 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f41997d..eb116d0 100644 --- a/package.json +++ b/package.json @@ -55,10 +55,10 @@ "@semantic-release/git": "^10.0.1", "@semantic-release/github": "^11.0.1", "@semantic-release/release-notes-generator": "^11.0.7", - "@types/jest": "^30.0.0", + "@types/jest": "^29.5.12", "@types/node": "^22.0.0", "eslint": "^9.29.0", - "jest": "^30.0.3", + "jest": "^29.7.0", "patch-package": "^8.0.1", "semantic-release": "^24.2.0", "ts-jest": "^29.4.0",