@spinajs/queue-stomp-transport 2.0.259 → 2.0.261

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.
@@ -0,0 +1,171 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { UnexpectedServerError, InvalidArgument } from '@spinajs/exceptions';
11
+ import { QueueClient } from '@spinajs/queue';
12
+ import Stomp from '@stomp/stompjs';
13
+ import _ from 'lodash';
14
+ import { Injectable, PerInstanceCheck } from '@spinajs/di';
15
+ import websocket from 'websocket';
16
+ Object.assign(global, { WebSocket: websocket.w3cwebsocket });
17
+ let StompQueueClient = class StompQueueClient extends QueueClient {
18
+ get ClientId() {
19
+ return this.Options.clientId ?? this.Options.name;
20
+ }
21
+ constructor(options) {
22
+ super(options);
23
+ this.Subscriptions = new Map();
24
+ }
25
+ async resolve() {
26
+ this.Client = new Stomp.Client({
27
+ brokerURL: this.Options.host,
28
+ connectHeaders: {
29
+ login: this.Options.login,
30
+ passcode: this.Options.password,
31
+ 'client-id': this.ClientId,
32
+ },
33
+ reconnectDelay: 5000,
34
+ heartbeatIncoming: 4000,
35
+ heartbeatOutgoing: 4000,
36
+ // additional options
37
+ ...this.Options.options,
38
+ });
39
+ if (this.Options.debug) {
40
+ this.Client.debug = (str) => {
41
+ this.Log.trace(str);
42
+ };
43
+ }
44
+ return new Promise((resolve, reject) => {
45
+ this.Client.onStompError = (frame) => {
46
+ reject(new UnexpectedServerError(`Cannot connect to queue server at ${this.Options.host}`, frame));
47
+ };
48
+ this.Client.onConnect = () => {
49
+ this.Log.success('Connected to STOMP client, client-id: ' + this.ClientId);
50
+ resolve();
51
+ // when connected override callbacks for loggin
52
+ this.Client.onStompError = (frame) => {
53
+ // Will be invoked in case of error encountered at Broker
54
+ // Bad login/passcode typically will cause an error
55
+ // Complaint brokers will set `message` header with a brief message. Body may contain details.
56
+ // Compliant brokers will terminate the connection after any error
57
+ this.Log.error('Broker reported error: ' + frame.headers['message']);
58
+ this.Log.error('Additional details: ' + frame.body);
59
+ };
60
+ this.Client.onConnect = () => {
61
+ this.Log.success('Connected to STOMP client');
62
+ };
63
+ this.Client.onDisconnect = () => {
64
+ this.Log.warn('Disconnected to STOMP client');
65
+ };
66
+ this.Client.onWebSocketError = (err) => {
67
+ this.Log.warn(err);
68
+ };
69
+ };
70
+ this.Client.onWebSocketError = (err) => {
71
+ this.Log.error(`Websocket error: ${JSON.stringify(err)}`);
72
+ reject(new UnexpectedServerError(`Cannot connect to queue server at ${this.Options.host}, websocket error`, err));
73
+ };
74
+ this.Client.activate();
75
+ });
76
+ }
77
+ async dispose() {
78
+ this.Log.info(`Disposing queue connection ${this.Options.name} ...`);
79
+ return new Promise((resolve) => {
80
+ // if we dont have onDisconnect callback after 5sek, assume we have disconnected
81
+ const t = setTimeout(() => {
82
+ this.Log.warn('STOMP client deactivated, but was not connected before');
83
+ resolve();
84
+ }, 5000);
85
+ this.Client.onDisconnect = () => {
86
+ clearTimeout(t);
87
+ resolve();
88
+ this.Log.success('STOMP client deactivated');
89
+ };
90
+ this.Client.deactivate();
91
+ });
92
+ }
93
+ async emit(message) {
94
+ const channels = this.getChannelForMessage(message);
95
+ const headers = {};
96
+ if (message.Persistent) {
97
+ headers['persistent'] = 'true';
98
+ }
99
+ if (message.Priority) {
100
+ headers.priority = `${message.Priority}`;
101
+ }
102
+ if (message.ScheduleCron) {
103
+ headers['AMQ_SCHEDULED_CRON'] = message.ScheduleCron;
104
+ }
105
+ if (message.ScheduleDelay) {
106
+ headers['AMQ_SCHEDULED_DELAY'] = message.ScheduleDelay.toString();
107
+ }
108
+ if (message.SchedulePeriod) {
109
+ headers['AMQ_SCHEDULED_PERIOD'] = message.SchedulePeriod.toString();
110
+ }
111
+ if (message.ScheduleRepeat) {
112
+ headers['AMQ_SCHEDULED_REPEAT'] = message.ScheduleRepeat.toString();
113
+ }
114
+ channels.forEach((c) => {
115
+ this.Client.publish({
116
+ destination: c,
117
+ body: JSON.stringify(message),
118
+ headers,
119
+ });
120
+ this.Log.trace(`Published ${message.Type} Name: ${message.Name}} to channel ${c} ( ${this.Options.name} )`);
121
+ });
122
+ }
123
+ unsubscribe(channelOrMessage) {
124
+ const channels = _.isString(channelOrMessage) ? [channelOrMessage] : this.getChannelForMessage(channelOrMessage);
125
+ channels.forEach((c) => {
126
+ if (!this.Subscriptions.has(c)) {
127
+ return;
128
+ }
129
+ this.Subscriptions.get(c).unsubscribe();
130
+ this.Subscriptions.delete(c);
131
+ });
132
+ }
133
+ async subscribe(channelOrMessage, callback, subscriptionId, durable) {
134
+ const channels = _.isString(channelOrMessage) ? [channelOrMessage] : this.getChannelForMessage(channelOrMessage);
135
+ channels.forEach((c) => {
136
+ if (this.Subscriptions.has(c)) {
137
+ this.Log.warn(`Channel ${c} already subscribed !`);
138
+ return;
139
+ }
140
+ const headers = { ack: 'client', 'activemq.prefetchSize': '1' };
141
+ if (subscriptionId) {
142
+ headers.id = subscriptionId;
143
+ }
144
+ if (durable) {
145
+ if (!subscriptionId) {
146
+ throw new InvalidArgument(`subscriptionId cannot be empty if using durable subscriptions`);
147
+ }
148
+ headers['activemq.subscriptionName'] = subscriptionId;
149
+ }
150
+ const subscription = this.Client.subscribe(c, (message) => {
151
+ const qMessage = JSON.parse(message.body);
152
+ callback(qMessage)
153
+ .then(() => {
154
+ message.ack();
155
+ })
156
+ .catch(() => {
157
+ message.nack();
158
+ });
159
+ }, headers);
160
+ this.Subscriptions.set(c, subscription);
161
+ this.Log.success(`Channel ${c}, durable: ${durable ? 'true' : 'false'} subscribed and ready to receive messages !`);
162
+ });
163
+ }
164
+ };
165
+ StompQueueClient = __decorate([
166
+ PerInstanceCheck(),
167
+ Injectable(QueueClient),
168
+ __metadata("design:paramtypes", [Object])
169
+ ], StompQueueClient);
170
+ export { StompQueueClient };
171
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/connection.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,3 @@
1
- import { IQueueMessage, IQueueConnectionOptions, QueueClient, QueueMessage } from '@spinajs/queue';
2
- import Stomp from '@stomp/stompjs';
3
- import { Constructor } from '@spinajs/di';
4
- export declare class StompQueueClient extends QueueClient {
5
- protected Client: Stomp.Client;
6
- protected Subscriptions: Map<string, Stomp.StompSubscription>;
7
- get ClientId(): string;
8
- constructor(options: IQueueConnectionOptions);
9
- resolve(): Promise<void>;
10
- dispose(): Promise<void>;
11
- emit(message: IQueueMessage): Promise<void>;
12
- unsubscribe(channelOrMessage: string | Constructor<QueueMessage>): void;
13
- subscribe(channelOrMessage: string | Constructor<QueueMessage>, callback: (e: IQueueMessage) => Promise<void>, subscriptionId?: string, durable?: boolean): Promise<void>;
14
- }
1
+ export * from "./connection-factory.js";
2
+ export * from "./connection.js";
15
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnG,OAAO,KAAK,MAAM,gBAAgB,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAgC,MAAM,aAAa,CAAC;AAKxE,qBAEa,gBAAiB,SAAQ,WAAW;IAC/C,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;IAE/B,SAAS,CAAC,aAAa,uCAA8C;IAErE,IAAW,QAAQ,WAElB;gBAEW,OAAO,EAAE,uBAAuB;IAI/B,OAAO;IAiEP,OAAO;IAsBP,IAAI,CAAC,OAAO,EAAE,aAAa;IAuCjC,WAAW,CAAC,gBAAgB,EAAE,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC;IAa1D,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CA4CvL"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC"}
package/lib/mjs/index.js CHANGED
@@ -1,171 +1,3 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import { UnexpectedServerError, InvalidArgument } from '@spinajs/exceptions';
11
- import { QueueClient } from '@spinajs/queue';
12
- import Stomp from '@stomp/stompjs';
13
- import _ from 'lodash';
14
- import { Injectable, PerInstanceCheck } from '@spinajs/di';
15
- import websocket from 'websocket';
16
- Object.assign(global, { WebSocket: websocket.w3cwebsocket });
17
- let StompQueueClient = class StompQueueClient extends QueueClient {
18
- get ClientId() {
19
- return this.Options.clientId ?? this.Options.name;
20
- }
21
- constructor(options) {
22
- super(options);
23
- this.Subscriptions = new Map();
24
- }
25
- async resolve() {
26
- this.Client = new Stomp.Client({
27
- brokerURL: this.Options.host,
28
- connectHeaders: {
29
- login: this.Options.login,
30
- passcode: this.Options.password,
31
- 'client-id': this.ClientId,
32
- },
33
- reconnectDelay: 5000,
34
- heartbeatIncoming: 4000,
35
- heartbeatOutgoing: 4000,
36
- // additional options
37
- ...this.Options.options,
38
- });
39
- if (this.Options.debug) {
40
- this.Client.debug = (str) => {
41
- this.Log.trace(str);
42
- };
43
- }
44
- return new Promise((resolve, reject) => {
45
- this.Client.onStompError = (frame) => {
46
- reject(new UnexpectedServerError(`Cannot connect to queue server at ${this.Options.host}`, frame));
47
- };
48
- this.Client.onConnect = () => {
49
- this.Log.success('Connected to STOMP client, client-id: ' + this.ClientId);
50
- resolve();
51
- // when connected override callbacks for loggin
52
- this.Client.onStompError = (frame) => {
53
- // Will be invoked in case of error encountered at Broker
54
- // Bad login/passcode typically will cause an error
55
- // Complaint brokers will set `message` header with a brief message. Body may contain details.
56
- // Compliant brokers will terminate the connection after any error
57
- this.Log.error('Broker reported error: ' + frame.headers['message']);
58
- this.Log.error('Additional details: ' + frame.body);
59
- };
60
- this.Client.onConnect = () => {
61
- this.Log.success('Connected to STOMP client');
62
- };
63
- this.Client.onDisconnect = () => {
64
- this.Log.warn('Disconnected to STOMP client');
65
- };
66
- this.Client.onWebSocketError = (err) => {
67
- this.Log.warn(err);
68
- };
69
- };
70
- this.Client.onWebSocketError = (err) => {
71
- this.Log.error(`Websocket error: ${JSON.stringify(err)}`);
72
- reject(new UnexpectedServerError(`Cannot connect to queue server at ${this.Options.host}, websocket error`, err));
73
- };
74
- this.Client.activate();
75
- });
76
- }
77
- async dispose() {
78
- this.Log.info(`Disposing queue connection ${this.Options.name} ...`);
79
- return new Promise((resolve) => {
80
- // if we dont have onDisconnect callback after 5sek, assume we have disconnected
81
- const t = setTimeout(() => {
82
- this.Log.warn('STOMP client deactivated, but was not connected before');
83
- resolve();
84
- }, 5000);
85
- this.Client.onDisconnect = () => {
86
- clearTimeout(t);
87
- resolve();
88
- this.Log.success('STOMP client deactivated');
89
- };
90
- this.Client.deactivate();
91
- });
92
- }
93
- async emit(message) {
94
- const channels = this.getChannelForMessage(message);
95
- const headers = {};
96
- if (message.Persistent) {
97
- headers['persistent'] = 'true';
98
- }
99
- if (message.Priority) {
100
- headers.priority = `${message.Priority}`;
101
- }
102
- if (message.ScheduleCron) {
103
- headers['AMQ_SCHEDULED_CRON'] = message.ScheduleCron;
104
- }
105
- if (message.ScheduleDelay) {
106
- headers['AMQ_SCHEDULED_DELAY'] = message.ScheduleDelay.toString();
107
- }
108
- if (message.SchedulePeriod) {
109
- headers['AMQ_SCHEDULED_PERIOD'] = message.SchedulePeriod.toString();
110
- }
111
- if (message.ScheduleRepeat) {
112
- headers['AMQ_SCHEDULED_REPEAT'] = message.ScheduleRepeat.toString();
113
- }
114
- channels.forEach((c) => {
115
- this.Client.publish({
116
- destination: c,
117
- body: JSON.stringify(message),
118
- headers,
119
- });
120
- this.Log.trace(`Published ${message.Type} Name: ${message.Name}} to channel ${c} ( ${this.Options.name} )`);
121
- });
122
- }
123
- unsubscribe(channelOrMessage) {
124
- const channels = _.isString(channelOrMessage) ? [channelOrMessage] : this.getChannelForMessage(channelOrMessage);
125
- channels.forEach((c) => {
126
- if (!this.Subscriptions.has(c)) {
127
- return;
128
- }
129
- this.Subscriptions.get(c).unsubscribe();
130
- this.Subscriptions.delete(c);
131
- });
132
- }
133
- async subscribe(channelOrMessage, callback, subscriptionId, durable) {
134
- const channels = _.isString(channelOrMessage) ? [channelOrMessage] : this.getChannelForMessage(channelOrMessage);
135
- channels.forEach((c) => {
136
- if (this.Subscriptions.has(c)) {
137
- this.Log.warn(`Channel ${c} already subscribed !`);
138
- return;
139
- }
140
- const headers = { ack: 'client', 'activemq.prefetchSize': '1' };
141
- if (subscriptionId) {
142
- headers.id = subscriptionId;
143
- }
144
- if (durable) {
145
- if (!subscriptionId) {
146
- throw new InvalidArgument(`subscriptionId cannot be empty if using durable subscriptions`);
147
- }
148
- headers['activemq.subscriptionName'] = subscriptionId;
149
- }
150
- const subscription = this.Client.subscribe(c, (message) => {
151
- const qMessage = JSON.parse(message.body);
152
- callback(qMessage)
153
- .then(() => {
154
- message.ack();
155
- })
156
- .catch(() => {
157
- message.nack();
158
- });
159
- }, headers);
160
- this.Subscriptions.set(c, subscription);
161
- this.Log.success(`Channel ${c}, durable: ${durable ? 'true' : 'false'} subscribed and ready to receive messages !`);
162
- });
163
- }
164
- };
165
- StompQueueClient = __decorate([
166
- PerInstanceCheck(),
167
- Injectable(QueueClient),
168
- __metadata("design:paramtypes", [Object])
169
- ], StompQueueClient);
170
- export { StompQueueClient };
1
+ export * from "./connection-factory.js";
2
+ export * from "./connection.js";
171
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC"}