@autofleet/rabbit 1.6.2 → 1.7.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/package.json +1 -1
- package/.eslintrc.json +0 -66
- package/dist/example.d.ts +0 -1
- package/dist/example.js +0 -37
- package/dist/index.test.d.ts +0 -1
- package/dist/index.test.js +0 -114
- package/jest.config.js +0 -14
- package/nodemon.json +0 -13
- package/src/example.ts +0 -31
- package/src/index.test.ts +0 -113
package/package.json
CHANGED
package/.eslintrc.json
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"root": true,
|
|
3
|
-
"env": {
|
|
4
|
-
"node": true,
|
|
5
|
-
"jest": true
|
|
6
|
-
},
|
|
7
|
-
"extends": [
|
|
8
|
-
"airbnb-base",
|
|
9
|
-
"plugin:@typescript-eslint/recommended"
|
|
10
|
-
],
|
|
11
|
-
"rules": {
|
|
12
|
-
"import/extensions": [
|
|
13
|
-
"error",
|
|
14
|
-
"ignorePackages",
|
|
15
|
-
{
|
|
16
|
-
"js": "never",
|
|
17
|
-
"jsx": "never",
|
|
18
|
-
"ts": "never",
|
|
19
|
-
"tsx": "never"
|
|
20
|
-
}
|
|
21
|
-
],
|
|
22
|
-
"@typescript-eslint/no-unused-vars": ["error"],
|
|
23
|
-
"@typescript-eslint/no-var-requires": ["off"],
|
|
24
|
-
"@typescript-eslint/camelcase": ["off"],
|
|
25
|
-
"max-len": ["off"],
|
|
26
|
-
"@typescript-eslint/explicit-function-return-type": ["off"]
|
|
27
|
-
},
|
|
28
|
-
"overrides": [
|
|
29
|
-
{
|
|
30
|
-
// enable the rule specifically for TypeScript files
|
|
31
|
-
"files": ["src/**.js", "src/**.ts"],
|
|
32
|
-
"rules": {
|
|
33
|
-
"@typescript-eslint/explicit-function-return-type": ["off"],
|
|
34
|
-
"@typescript-eslint/no-var-requires": ["off"],
|
|
35
|
-
"@typescript-eslint/camelcase": ["off"]
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
],
|
|
39
|
-
"parser": "@typescript-eslint/parser",
|
|
40
|
-
"parserOptions": {
|
|
41
|
-
"project": "./tsconfig.json",
|
|
42
|
-
"sourceType": "module"
|
|
43
|
-
},
|
|
44
|
-
"ignorePatterns": ["dist/*", "node_modules/", "jest.config.js", "migrations/*", "newrelic.js"],
|
|
45
|
-
"plugins": ["@typescript-eslint"],
|
|
46
|
-
"settings": {
|
|
47
|
-
"import/extensions": [
|
|
48
|
-
"error",
|
|
49
|
-
"ignorePackages",
|
|
50
|
-
{
|
|
51
|
-
"js": "never",
|
|
52
|
-
"jsx": "never",
|
|
53
|
-
"ts": "never",
|
|
54
|
-
"tsx": "never"
|
|
55
|
-
}
|
|
56
|
-
],
|
|
57
|
-
"import/parsers": {
|
|
58
|
-
"@typescript-eslint/parser": [".ts",".tsx"]
|
|
59
|
-
},
|
|
60
|
-
"import/resolver": {
|
|
61
|
-
"node": {
|
|
62
|
-
"extensions": [".js",".jsx",".ts",".tsx", ".json"]
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
package/dist/example.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/example.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const index_1 = __importDefault(require("./index"));
|
|
16
|
-
process.env.RABBITMQ_SERVICE_HOST = '34.76.123.137:5672';
|
|
17
|
-
const init = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
-
const rabbit = new index_1.default();
|
|
19
|
-
yield rabbit.consumeFromExchange('test-q2', 'test-e', (msg, ack) => {
|
|
20
|
-
console.log('consumeFromExchange: msg2', msg.content);
|
|
21
|
-
ack(msg);
|
|
22
|
-
});
|
|
23
|
-
yield rabbit.consumeFromExchange('test-q', 'test-e', (msg, ack) => {
|
|
24
|
-
console.log('consumeFromExchange: msg', msg.content);
|
|
25
|
-
ack(msg);
|
|
26
|
-
});
|
|
27
|
-
yield rabbit.publish('test-e', 'hey');
|
|
28
|
-
yield rabbit.publish('test-e', 'hey1');
|
|
29
|
-
yield rabbit.consume('test-q-2', (msg, ack) => {
|
|
30
|
-
console.log('consume: msg-q', msg.content);
|
|
31
|
-
ack(msg);
|
|
32
|
-
});
|
|
33
|
-
yield rabbit.sendToQueue('test-q-2', 'hey-q');
|
|
34
|
-
const getQueueLength = yield rabbit.getQueueLength('test-q2');
|
|
35
|
-
console.log(`getQueueLength:${getQueueLength}`);
|
|
36
|
-
});
|
|
37
|
-
init();
|
package/dist/index.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/index.test.js
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
/* eslint-disable @typescript-eslint/ban-ts-comment,@typescript-eslint/no-unused-vars */
|
|
16
|
-
const index_1 = __importDefault(require("./index"));
|
|
17
|
-
jest.setTimeout(120000);
|
|
18
|
-
const rabbit = new index_1.default();
|
|
19
|
-
const delay = (ms = 500) => new Promise((resolve) => setTimeout(() => resolve(), ms));
|
|
20
|
-
const callback = (eq = 'hey') => (msg, ack) => {
|
|
21
|
-
expect(msg.content).toEqual(eq);
|
|
22
|
-
ack(msg);
|
|
23
|
-
};
|
|
24
|
-
const nackcallback = ({ skipRetry = false } = {}) => (msg, ack, nack) => {
|
|
25
|
-
console.log('msg', msg.content);
|
|
26
|
-
expect(msg.content.ttt).toEqual('hey-q');
|
|
27
|
-
if (skipRetry) {
|
|
28
|
-
nack(msg, { skipRetry });
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
nack(msg);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
describe('RabbitMQ', () => {
|
|
35
|
-
it('check exchange', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
36
|
-
const mockFn = jest.fn(callback());
|
|
37
|
-
yield rabbit.consumeFromExchange('test-q2', 'test-e', mockFn);
|
|
38
|
-
yield rabbit.publish('test-e', 'hey');
|
|
39
|
-
yield delay();
|
|
40
|
-
expect(mockFn).toBeCalled();
|
|
41
|
-
}));
|
|
42
|
-
it('check queue', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
43
|
-
const mockFn = jest.fn(callback('hey-q'));
|
|
44
|
-
yield rabbit.consume('test-q-2', mockFn);
|
|
45
|
-
yield rabbit.sendToQueue('test-q-2', 'hey-q');
|
|
46
|
-
yield delay();
|
|
47
|
-
expect(mockFn).toBeCalled();
|
|
48
|
-
}));
|
|
49
|
-
it('check retry', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
50
|
-
const mockFn = jest.fn(nackcallback());
|
|
51
|
-
yield rabbit.consume('test-q-retry', mockFn, { retries: 3 });
|
|
52
|
-
yield rabbit.sendToQueue('test-q-retry', { ttt: 'hey-q' });
|
|
53
|
-
yield delay(1500);
|
|
54
|
-
expect(mockFn).toHaveBeenCalledTimes(4); // one run then 3 times retry
|
|
55
|
-
}));
|
|
56
|
-
it('check skip retry', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
57
|
-
const mockFn = jest.fn(nackcallback({ skipRetry: true }));
|
|
58
|
-
yield rabbit.consume('test-q-skip-retry', mockFn, { retries: 3 });
|
|
59
|
-
yield rabbit.sendToQueue('test-q-skip-retry', { ttt: 'hey-q' });
|
|
60
|
-
yield delay(1500);
|
|
61
|
-
expect(mockFn).toHaveBeenCalledTimes(1);
|
|
62
|
-
}));
|
|
63
|
-
it('check nack and dead queue', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
64
|
-
const mockFn = jest.fn(nackcallback());
|
|
65
|
-
yield rabbit.consume('test-q-nack', mockFn);
|
|
66
|
-
yield rabbit.sendToQueue('test-q-nack', { ttt: 'hey-q' });
|
|
67
|
-
yield delay(1000);
|
|
68
|
-
expect(mockFn).toHaveBeenCalledTimes(2); // one run then 1 time retry
|
|
69
|
-
yield delay();
|
|
70
|
-
const length = yield rabbit.getQueueLength('test-q-nack-dead');
|
|
71
|
-
expect(length.messageCount).toEqual(1);
|
|
72
|
-
}));
|
|
73
|
-
it('cant publish to unknown exchange', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
74
|
-
let err;
|
|
75
|
-
try {
|
|
76
|
-
yield rabbit.publish('', 'hey');
|
|
77
|
-
}
|
|
78
|
-
catch (e) {
|
|
79
|
-
err = e;
|
|
80
|
-
}
|
|
81
|
-
expect(err).toBeDefined();
|
|
82
|
-
}));
|
|
83
|
-
it('cant publish due timeout', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
84
|
-
// @ts-ignore
|
|
85
|
-
process.env.RABBITMQ_PUBLISH_TIMEOUT = 1;
|
|
86
|
-
const rabbit2 = new index_1.default();
|
|
87
|
-
let err;
|
|
88
|
-
try {
|
|
89
|
-
yield rabbit2.publish('test-e', 'hey');
|
|
90
|
-
}
|
|
91
|
-
catch (e) {
|
|
92
|
-
err = e;
|
|
93
|
-
}
|
|
94
|
-
expect(err).toBeDefined();
|
|
95
|
-
}));
|
|
96
|
-
it('get queue length', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
97
|
-
const queueName = 'test-queue-length';
|
|
98
|
-
const exchangeName = 'test-e2';
|
|
99
|
-
yield rabbit.assertQueue(queueName);
|
|
100
|
-
yield rabbit.assertExchange(exchangeName);
|
|
101
|
-
yield rabbit.bindQueue(queueName, exchangeName);
|
|
102
|
-
yield rabbit.publish(exchangeName, 'hey');
|
|
103
|
-
let messageCount;
|
|
104
|
-
({ messageCount } = yield rabbit.getQueueLength(queueName));
|
|
105
|
-
expect(messageCount).toEqual(1);
|
|
106
|
-
yield rabbit.publish(exchangeName, 'hey');
|
|
107
|
-
({ messageCount } = yield rabbit.getQueueLength(queueName));
|
|
108
|
-
expect(messageCount).toEqual(2);
|
|
109
|
-
yield rabbit.consumeFromExchange(queueName, exchangeName, callback());
|
|
110
|
-
yield delay();
|
|
111
|
-
({ messageCount } = yield rabbit.getQueueLength(queueName));
|
|
112
|
-
expect(messageCount).toEqual(0);
|
|
113
|
-
}));
|
|
114
|
-
});
|
package/jest.config.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
testEnvironment: 'node',
|
|
3
|
-
roots: ['<rootDir>/src'],
|
|
4
|
-
transform: {
|
|
5
|
-
'^.+\\.tsx?$': 'ts-jest',
|
|
6
|
-
},
|
|
7
|
-
testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(tsx?$|jsx?$)',
|
|
8
|
-
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
|
|
9
|
-
coverageThreshold: {
|
|
10
|
-
global: {
|
|
11
|
-
lines: 75,
|
|
12
|
-
},
|
|
13
|
-
},
|
|
14
|
-
}
|
package/nodemon.json
DELETED
package/src/example.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import RabbitMq from './index';
|
|
2
|
-
|
|
3
|
-
process.env.RABBITMQ_SERVICE_HOST = '34.76.123.137:5672';
|
|
4
|
-
|
|
5
|
-
const init = async () => {
|
|
6
|
-
const rabbit = new RabbitMq();
|
|
7
|
-
|
|
8
|
-
await rabbit.consumeFromExchange('test-q2', 'test-e', (msg, ack) => {
|
|
9
|
-
console.log('consumeFromExchange: msg2', msg.content);
|
|
10
|
-
ack(msg);
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
await rabbit.consumeFromExchange('test-q', 'test-e', (msg, ack) => {
|
|
14
|
-
console.log('consumeFromExchange: msg', msg.content);
|
|
15
|
-
ack(msg);
|
|
16
|
-
});
|
|
17
|
-
await rabbit.publish('test-e', 'hey');
|
|
18
|
-
await rabbit.publish('test-e', 'hey1');
|
|
19
|
-
|
|
20
|
-
await rabbit.consume('test-q-2', (msg, ack) => {
|
|
21
|
-
console.log('consume: msg-q', msg.content);
|
|
22
|
-
ack(msg);
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
await rabbit.sendToQueue('test-q-2', 'hey-q');
|
|
26
|
-
|
|
27
|
-
const getQueueLength = await rabbit.getQueueLength('test-q2');
|
|
28
|
-
console.log(`getQueueLength:${getQueueLength}`);
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
init();
|
package/src/index.test.ts
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/ban-ts-comment,@typescript-eslint/no-unused-vars */
|
|
2
|
-
import RabbitMq from './index';
|
|
3
|
-
|
|
4
|
-
jest.setTimeout(120000);
|
|
5
|
-
|
|
6
|
-
const rabbit = new RabbitMq();
|
|
7
|
-
|
|
8
|
-
const delay = (ms = 500) => new Promise((resolve) => setTimeout(() => resolve(), ms));
|
|
9
|
-
|
|
10
|
-
const callback = (eq = 'hey') => (msg: any, ack: any) => {
|
|
11
|
-
expect(msg.content).toEqual(eq);
|
|
12
|
-
ack(msg);
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
const nackcallback = ({ skipRetry = false } = { }) => (msg: any, ack: any, nack: any) => {
|
|
16
|
-
console.log('msg', msg.content);
|
|
17
|
-
expect(msg.content.ttt).toEqual('hey-q');
|
|
18
|
-
if (skipRetry) {
|
|
19
|
-
nack(msg, { skipRetry });
|
|
20
|
-
} else {
|
|
21
|
-
nack(msg);
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
describe('RabbitMQ', () => {
|
|
26
|
-
it('check exchange', async () => {
|
|
27
|
-
const mockFn = jest.fn(callback());
|
|
28
|
-
await rabbit.consumeFromExchange('test-q2', 'test-e', mockFn);
|
|
29
|
-
await rabbit.publish('test-e', 'hey');
|
|
30
|
-
await delay();
|
|
31
|
-
expect(mockFn).toBeCalled();
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it('check queue', async () => {
|
|
35
|
-
const mockFn = jest.fn(callback('hey-q'));
|
|
36
|
-
await rabbit.consume('test-q-2', mockFn);
|
|
37
|
-
await rabbit.sendToQueue('test-q-2', 'hey-q');
|
|
38
|
-
await delay();
|
|
39
|
-
expect(mockFn).toBeCalled();
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
it('check retry', async () => {
|
|
43
|
-
const mockFn = jest.fn(nackcallback());
|
|
44
|
-
await rabbit.consume('test-q-retry', mockFn, { retries: 3 });
|
|
45
|
-
await rabbit.sendToQueue('test-q-retry', { ttt: 'hey-q' });
|
|
46
|
-
await delay(1500);
|
|
47
|
-
expect(mockFn).toHaveBeenCalledTimes(4); // one run then 3 times retry
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it('check skip retry', async () => {
|
|
51
|
-
const mockFn = jest.fn(nackcallback({ skipRetry: true }));
|
|
52
|
-
await rabbit.consume('test-q-skip-retry', mockFn, { retries: 3 });
|
|
53
|
-
await rabbit.sendToQueue('test-q-skip-retry', { ttt: 'hey-q' });
|
|
54
|
-
await delay(1500);
|
|
55
|
-
expect(mockFn).toHaveBeenCalledTimes(1);
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
it('check nack and dead queue', async () => {
|
|
59
|
-
const mockFn = jest.fn(nackcallback());
|
|
60
|
-
await rabbit.consume('test-q-nack', mockFn);
|
|
61
|
-
await rabbit.sendToQueue('test-q-nack', { ttt: 'hey-q' });
|
|
62
|
-
await delay(1000);
|
|
63
|
-
expect(mockFn).toHaveBeenCalledTimes(2); // one run then 1 time retry
|
|
64
|
-
await delay();
|
|
65
|
-
const length = await rabbit.getQueueLength('test-q-nack-dead');
|
|
66
|
-
expect(length.messageCount).toEqual(1);
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
it('cant publish to unknown exchange', async () => {
|
|
70
|
-
let err;
|
|
71
|
-
try {
|
|
72
|
-
await rabbit.publish('', 'hey');
|
|
73
|
-
} catch (e) {
|
|
74
|
-
err = e;
|
|
75
|
-
}
|
|
76
|
-
expect(err).toBeDefined();
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
it('cant publish due timeout', async () => {
|
|
80
|
-
// @ts-ignore
|
|
81
|
-
process.env.RABBITMQ_PUBLISH_TIMEOUT = 1;
|
|
82
|
-
const rabbit2 = new RabbitMq();
|
|
83
|
-
|
|
84
|
-
let err;
|
|
85
|
-
try {
|
|
86
|
-
await rabbit2.publish('test-e', 'hey');
|
|
87
|
-
} catch (e) {
|
|
88
|
-
err = e;
|
|
89
|
-
}
|
|
90
|
-
expect(err).toBeDefined();
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
it('get queue length', async () => {
|
|
94
|
-
const queueName = 'test-queue-length';
|
|
95
|
-
const exchangeName = 'test-e2';
|
|
96
|
-
|
|
97
|
-
await rabbit.assertQueue(queueName);
|
|
98
|
-
await rabbit.assertExchange(exchangeName);
|
|
99
|
-
await rabbit.bindQueue(queueName, exchangeName);
|
|
100
|
-
|
|
101
|
-
await rabbit.publish(exchangeName, 'hey');
|
|
102
|
-
let messageCount: any;
|
|
103
|
-
({ messageCount } = await rabbit.getQueueLength(queueName));
|
|
104
|
-
expect(messageCount).toEqual(1);
|
|
105
|
-
await rabbit.publish(exchangeName, 'hey');
|
|
106
|
-
({ messageCount } = await rabbit.getQueueLength(queueName));
|
|
107
|
-
expect(messageCount).toEqual(2);
|
|
108
|
-
await rabbit.consumeFromExchange(queueName, exchangeName, callback());
|
|
109
|
-
await delay();
|
|
110
|
-
({ messageCount } = await rabbit.getQueueLength(queueName));
|
|
111
|
-
expect(messageCount).toEqual(0);
|
|
112
|
-
});
|
|
113
|
-
});
|