Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
2faa547
chore: add library
jkoenig134 Nov 17, 2025
6a6994e
fix: use the new lib
jkoenig134 Nov 17, 2025
be82d8d
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
jkoenig134 Nov 18, 2025
4a4c1b1
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Nov 19, 2025
adc5524
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Nov 19, 2025
bb5b4dc
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Nov 20, 2025
7243355
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Nov 20, 2025
4828745
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Nov 20, 2025
b153a06
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Nov 22, 2025
86d9214
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Nov 22, 2025
243e09c
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Nov 24, 2025
e772639
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Nov 26, 2025
5bbcb51
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Nov 26, 2025
6c8c6f6
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Nov 28, 2025
e98a568
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Nov 28, 2025
56a432b
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Nov 28, 2025
501a332
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Nov 30, 2025
39a0a03
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 1, 2025
ab22f5f
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 2, 2025
6f0d973
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 2, 2025
26ac891
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 3, 2025
d8485ea
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 3, 2025
0c28650
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 4, 2025
17cd0ce
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 5, 2025
18d077d
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 8, 2025
0d5a1f3
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 9, 2025
648a0b1
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 9, 2025
cac42b1
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 10, 2025
c6c7137
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 10, 2025
d7f4f2d
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 11, 2025
5fedb1d
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 11, 2025
f0fbe9f
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 11, 2025
b14c711
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 12, 2025
4014d39
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 12, 2025
3f0be9f
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 12, 2025
3ffa09c
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 13, 2025
a6b33a3
Merge branch 'main' into add-amqp-connection-manager-for-automatic-re…
mergify[bot] Dec 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@
"@nmshd/typescript-ioc": "^3.2.5",
"@nmshd/typescript-rest": "^3.2.2",
"agentkeepalive": "4.6.0",
"amqp-connection-manager": "^5.0.0",
"amqplib": "^0.10.9",
"axios": "^1.13.2",
"compression": "1.8.1",
Expand Down
20 changes: 10 additions & 10 deletions src/modules/messageBrokerPublisher/connectors/AMQPConnector.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ILogger } from "@js-soft/logging-abstractions";
import amqp from "amqplib";
import { AmqpConnectionManager, ChannelWrapper, connect as amqpConnect } from "amqp-connection-manager";
import { MessageBrokerConnector } from "./MessageBrokerConnector";

export interface AMQPConnectorConfiguration {
Expand All @@ -9,8 +9,8 @@ export interface AMQPConnectorConfiguration {
}

export class AMQPConnector extends MessageBrokerConnector<AMQPConnectorConfiguration> {
private connection?: amqp.ChannelModel;
private channel?: amqp.Channel;
private connection?: AmqpConnectionManager;
private channel?: ChannelWrapper;

public constructor(configuration: AMQPConnectorConfiguration, logger: ILogger) {
super(configuration, logger);
Expand All @@ -21,24 +21,24 @@ export class AMQPConnector extends MessageBrokerConnector<AMQPConnectorConfigura
public async init(): Promise<void> {
const url = this.configuration.url;

this.connection = await amqp.connect(url, { timeout: this.configuration.timeout ?? 2000 }).catch((e) => {
throw new Error(`Could not connect to RabbitMQ at '${url}' (${e.message})`);
});
this.connection = amqpConnect(url, { connectionOptions: { timeout: this.configuration.timeout ?? 2000 } });

this.channel = await this.connection.createChannel().catch((e) => {
throw new Error(`Could not create a channel for RabbitMQ (${e.message})`);
await this.connection.connect().catch((e) => {
throw new Error(`Could not connect to RabbitMQ at '${url}' (${e.message})`);
});

const exchange = this.configuration.exchange ?? "";
this.channel = this.connection.createChannel({ json: true });

await this.channel.checkExchange(exchange).catch(() => {
throw new Error(`The configured exchange '${exchange}' does not exist.`);
});
}

public publish(namespace: string, data: Buffer): void {
public async publish(namespace: string, data: Buffer): Promise<void> {
const exchangeName = this.configuration.exchange ?? "";

const sent = this.channel!.publish(exchangeName, namespace, data);
const sent = await this.channel!.publish(exchangeName, namespace, data);
if (!sent) {
this.logger.error(`Publishing event '${namespace}' to exchange '${exchangeName}' failed.`);
}
Expand Down