🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

c4-mq

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

c4-mq - npm Package Compare versions

Comparing version
0.0.5
to
0.0.6
+27
out/C4MQTypes/C4MQTopicRoute.d.ts
declare const gData: unique symbol;
declare type IRouteNode<T> = {
[key: string]: IRouteNode<T>;
[gData]?: T | null;
};
export default class C4MQTopicRoute<T> {
private root;
constructor();
insert(key: string, data: T): void;
protected _match(root: IRouteNode<T>, words: string[]): {
prefix: string;
routeKey: string;
find: boolean;
data: any;
};
match(key: string): {
prefix: string;
routeKey: string;
find: boolean;
data: any;
};
delete(key: string): {
find: boolean;
data: T | null | undefined;
};
}
export {};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const gData = Symbol("data");
class C4MQTopicRoute {
constructor() {
this.root = {};
}
insert(key, data) {
const words = key.split(".");
let cur = this.root;
for (let i = 0; i < words.length; i++) {
const curWord = words[i];
if (cur[curWord] === undefined) {
cur[curWord] = {};
}
cur = cur[curWord];
}
cur[gData] = data || null;
}
_match(root, words) {
let cur = root;
let outKey = [];
let res = {
find: false
};
let hashKey = undefined;
for (let i = 0; i < words.length; i++) {
const curWord = words[i];
if (cur[curWord]) {
outKey.push(curWord);
cur = cur[curWord];
hashKey = undefined;
res.find = false;
}
else {
if (hashKey) {
cur = hashKey;
continue;
}
if (cur["*"] || cur["#"]) {
if (cur["*"]) {
res = this._match(cur["*"], words.slice(i + 1));
if (res.find) {
outKey.push("*");
if (res.routeKey !== "")
outKey.push(res.routeKey);
}
}
if (res.find === false && cur["#"]) {
outKey.push("#");
cur = cur["#"];
res.find = true;
if (Object.keys(cur).length === 0) {
break;
}
else {
hashKey = cur;
}
continue;
}
if (res.find) {
return {
prefix: words.join("."),
routeKey: outKey.join("."),
find: true,
data: res.data
};
}
}
if (res.find === false) {
return {
prefix: words.slice(0, i).join("."),
routeKey: outKey.join("."),
find: false,
data: undefined
};
}
} // cur[curWord] === undefined
}
if (cur[gData]) {
return {
prefix: words.join("."),
routeKey: outKey.join("."),
find: cur[gData] !== undefined,
data: cur[gData]
};
}
else {
return {
prefix: words.join("."),
routeKey: cur["#"] !== undefined ? outKey.join(".") + ".#" : outKey.join("."),
find: cur[gData] !== undefined || (cur["#"] !== undefined && cur["#"][gData] !== undefined),
data: cur[gData] || (cur["#"] ? cur["#"][gData] : undefined)
};
}
}
match(key) {
const words = key.split(".");
return this._match(this.root, words);
}
delete(key) {
const words = key.split('.');
let cur = this.root;
let detachParent = undefined;
let detachIndex = -1;
for (let i = 0; i < words.length; i++) {
const curWord = words[i];
if (cur[curWord]) {
cur = cur[curWord];
if (Object.keys(cur).length > 0) {
detachParent = cur;
detachIndex = i;
}
}
else {
return {
find: false,
data: undefined
};
}
}
// 没有匹配
if (cur[gData] === undefined) {
return {
find: false,
data: undefined
};
}
// 已匹配,处理路径上的分支
const data = cur[gData];
if (detachIndex === -1) {
// 无分支
delete cur[gData];
}
else { // 有分支
if (detachParent) {
// 分支在结尾处
if (words[detachIndex + 1] === undefined) {
delete detachParent[gData];
}
else {
// 分支在中间
delete detachParent[words[detachIndex + 1]];
}
}
}
return {
find: true,
data
};
}
}
exports.default = C4MQTopicRoute;
//# sourceMappingURL=C4MQTopicRoute.js.map
{"version":3,"file":"C4MQTopicRoute.js","sourceRoot":"","sources":["../../src/C4MQTypes/C4MQTopicRoute.ts"],"names":[],"mappings":"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"}
declare type INode<T> = {
[key: string]: INode<T> | T | null;
};
export default class C4TrieTree<T> {
private root;
constructor();
insert(key: string, data: T): void;
contains(key: string): {
prefix: string;
find: boolean;
data: undefined;
} | {
prefix: string;
find: boolean;
data: T | INode<T> | null;
};
find(prefix: string): {
word: string;
data: T;
}[];
match(key: string): {
word: string;
data: T | INode<T> | null;
}[];
delete(key: string): {
find: boolean;
data: undefined;
} | {
find: boolean;
data: T | INode<T> | null;
};
}
export {};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class C4TrieTree {
constructor() {
this.root = {};
}
// 插入数据
insert(key, data) {
let cur = this.root;
for (const c of key) {
if (cur[c] === undefined) {
cur[c] = {};
}
cur = (cur[c]);
}
cur["data"] = data || null;
}
// 完全匹配
contains(key) {
let cur = this.root;
for (const i in key) {
if (cur[key[i]]) {
cur = cur[key[i]];
}
else {
return {
prefix: key.slice(0, parseInt(i, 10)),
find: false,
data: undefined
};
}
}
return {
prefix: key,
find: cur["data"] !== undefined,
data: cur["data"]
};
}
// 前缀匹配,查找以给定key为前缀所有数据
find(prefix) {
let cur = this.root;
const output = [];
for (const i in prefix) {
if (cur[prefix[i]]) {
cur = cur[prefix[i]];
}
else {
return [];
}
}
function _getWord(node, _prefix) {
if (node["data"] !== undefined) {
output.push({
word: _prefix,
data: node["data"]
});
}
for (const key in node) {
if (key !== "data") {
_getWord(node[key], _prefix + key);
}
}
}
;
_getWord(cur, prefix);
return output;
}
// 与给定key有相同前缀的所有数据
match(key) {
let cur = this.root;
const output = [];
let i = 0;
for (; i < key.length; i++) {
if (cur["data"] !== undefined) {
output.push({
word: key.slice(0, i),
data: cur["data"]
});
}
if (cur[key[i]]) {
cur = cur[key[i]];
}
else {
break;
}
}
if (i >= key.length) {
if (cur["data"] !== undefined) {
output.push({
word: key.slice(0, i),
data: cur["data"]
});
}
}
return output;
}
// 根据key删除数据
delete(key) {
let cur = this.root;
let detachParent = undefined;
let detachIndex = -1;
for (const i in key) {
if (cur[key[i]]) {
cur = cur[key[i]];
if (Object.keys(cur).length > 1) {
detachParent = cur;
detachIndex = parseInt(i, 10);
}
}
else {
return {
find: false,
data: undefined
};
}
}
if (cur["data"] == undefined) {
return {
find: false,
data: undefined
};
}
const data = cur["data"];
if (detachIndex === -1) {
delete cur.data;
return {
find: true,
data
};
}
else {
if (detachParent) {
if (key[detachIndex + 1] === undefined) {
delete detachParent.data;
}
else {
delete detachParent[key[detachIndex + 1]];
}
}
return {
find: true,
data
};
}
}
}
exports.default = C4TrieTree;
//# sourceMappingURL=C4TrieTree.js.map
{"version":3,"file":"C4TrieTree.js","sourceRoot":"","sources":["../../src/C4MQTypes/C4TrieTree.ts"],"names":[],"mappings":";;AAIA,MAAqB,UAAU;IAG7B;QACE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,OAAO;IACA,MAAM,CAAC,GAAW,EAAE,IAAO;QAChC,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;YACnB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;gBACxB,GAAG,CAAC,CAAC,CAAC,GAAa,EAAE,CAAA;aACtB;YACD,GAAG,GAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1B;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;IAC7B,CAAC;IAED,OAAO;IACA,QAAQ,CAAC,GAAW;QACzB,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QACpB,KAAK,MAAM,CAAC,IAAS,GAAG,EAAE;YACxB,IAAI,GAAG,CAAO,GAAI,CAAC,CAAC,CAAC,CAAC,EAAE;gBACtB,GAAG,GAAc,GAAG,CAAO,GAAI,CAAC,CAAC,CAAC,CAAC,CAAA;aACpC;iBAAM;gBACL,OAAO;oBACL,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACrC,IAAI,EAAE,KAAK;oBACX,IAAI,EAAE,SAAS;iBAChB,CAAC;aACH;SACF;QACD,OAAO;YACL,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS;YAC/B,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;SAClB,CAAC;IACJ,CAAC;IAED,uBAAuB;IAChB,IAAI,CAAC,MAAc;QACxB,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QACpB,MAAM,MAAM,GAGN,EAAE,CAAC;QACT,KAAK,MAAM,CAAC,IAAS,MAAM,EAAE;YAC3B,IAAI,GAAG,CAAO,MAAO,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzB,GAAG,GAAa,GAAG,CAAO,MAAO,CAAC,CAAC,CAAC,CAAC,CAAC;aACvC;iBAAM;gBACL,OAAO,EAAE,CAAC;aACX;SACF;QAED,SAAS,QAAQ,CAAC,IAAkB,EAAE,OAAe;YACnD,IAAU,IAAK,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE;gBACrC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,OAAO;oBACb,IAAI,EAAQ,IAAK,CAAC,MAAM,CAAC;iBAC1B,CAAC,CAAC;aACJ;YAED,KAAK,MAAM,GAAG,IAAS,IAAI,EAAE;gBAC3B,IAAI,GAAG,KAAK,MAAM,EAAE;oBAClB,QAAQ,CAAO,IAAK,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,GAAG,CAAC,CAAA;iBAC1C;aACF;QACH,CAAC;QAAA,CAAC;QACF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAErB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mBAAmB;IACZ,KAAK,CAAC,GAAW;QACtB,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QACpB,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1B,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE;gBAC7B,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;oBACrB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;iBAClB,CAAC,CAAC;aACJ;YACD,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gBACf,GAAG,GAAa,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC7B;iBAAM;gBACL,MAAM;aACP;SACF;QACD,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;YACnB,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE;gBAC7B,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;oBACrB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;iBAClB,CAAC,CAAC;aACJ;SACF;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,YAAY;IACL,MAAM,CAAC,GAAW;QACvB,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QACpB,IAAI,YAAY,GAAyB,SAAS,CAAC;QACnD,IAAI,WAAW,GAAW,CAAC,CAAC,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAS,GAAG,EAAE;YACxB,IAAI,GAAG,CAAO,GAAI,CAAC,CAAC,CAAC,CAAC,EAAE;gBAEtB,GAAG,GAAa,GAAG,CAAO,GAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,MAAM,CAAC,IAAI,CAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBACpC,YAAY,GAAG,GAAG,CAAC;oBACnB,WAAW,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;iBAC/B;aACF;iBAAM;gBACL,OAAO;oBACL,IAAI,EAAE,KAAK;oBACX,IAAI,EAAE,SAAS;iBAChB,CAAC;aACH;SACF;QAED,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,EAAE;YAC5B,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,SAAS;aAChB,CAAA;SACF;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;YACtB,OAAO,GAAG,CAAC,IAAI,CAAC;YAChB,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,IAAI;aACL,CAAC;SACH;aAAM;YACL,IAAI,YAAY,EAAE;gBAChB,IAAU,GAAI,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,SAAS,EAAE;oBAC7C,OAAO,YAAY,CAAC,IAAI,CAAC;iBAC1B;qBAAM;oBACL,OAAO,YAAY,CAAO,GAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAA;iBACjD;aACF;YACD,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,IAAI;aACL,CAAC;SACH;IACH,CAAC;CACF;AAvJD,6BAuJC"}
declare function TestTopic(): {
publisherName: string;
routingKey: string;
subscribeOption: {
ack: boolean;
prefetchCount: number;
};
CBs: {
Test: (msg: any, headers: any, deliveryInfo: any, ack: any) => Promise<boolean>;
};
};
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
function TestTopic() {
console.log("123");
return {
publisherName: "TestPublisher2",
routingKey: "testKey.*",
subscribeOption: {
ack: true,
prefetchCount: 6 // 预读取数量
},
CBs: {
Test: function (msg, headers, deliveryInfo, ack) {
return __awaiter(this, void 0, void 0, function* () {
console.log(msg);
return true;
});
}
}
};
}
exports.default = TestTopic;
//# sourceMappingURL=TestTopic.js.map
{"version":3,"file":"TestTopic.js","sourceRoot":"","sources":["../../src/MQHandlers/TestTopic.ts"],"names":[],"mappings":";;;;;;;;;AAAA,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAClB,OAAO;QACL,aAAa,EAAE,gBAAgB;QAC/B,UAAU,EAAE,WAAW;QACvB,eAAe,EAAE;YACf,GAAG,EAAE,IAAI;YACT,aAAa,EAAE,CAAC,CAAC,QAAQ;SAC1B;QACD,GAAG,EAAE;YACH,IAAI,EAAE,UAAe,GAAQ,EAC3B,OAAY,EACZ,YAAiB,EACjB,GAAQ;;oBACR,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,OAAO,IAAI,CAAC;gBACd,CAAC;aAAA;SACF;KACF,CAAA;AACH,CAAC;AAED,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC"}
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const C4MQTopicRoute_1 = __importDefault(require("./C4MQTypes/C4MQTopicRoute"));
const routeKeys = new C4MQTopicRoute_1.default();
routeKeys.insert("*", {});
routeKeys.insert("*.*.*", {});
routeKeys.insert("#", {});
routeKeys.insert("aa.bb.cc", {});
routeKeys.insert("aa.*.cc", {});
routeKeys.insert("*.bb.*", {});
routeKeys.insert("#.aa.#", {});
routeKeys.insert("#.bb.*", {});
routeKeys.insert("#.bb.cc", {});
routeKeys.insert("#.cc", {});
routeKeys.insert("#.aa.#.#", {});
// console.log(JSON.stringify(routeKeys, null, 2));
console.log(routeKeys.match("abcde")); // match *
console.log(routeKeys.match("abcde.ee.zz")); // match *.*.*
console.log(routeKeys.match("abcde.ee")); // match #
console.log(routeKeys.match("aa.bb.cc")); // match aa.bb.cc
console.log(routeKeys.match("aa.zz.cc")); // match aa.*.cc
console.log(routeKeys.match("zz.bb.yy")); // match *.bb.*
console.log(routeKeys.match("abced.ee.zz.aa")); // match #.aa.#
console.log(routeKeys.match("abced.ee.zz.aa.aa.zzz")); // match #.aa.#
console.log(routeKeys.match("mm.dd.bb.aa")); // match #.bb.*
console.log(routeKeys.match("mm.dd.bb.cc")); // match #.bb.cc
console.log(routeKeys.match("mm.dd.zz.cc")); // match #.cc
console.log(routeKeys.match("*.*.cc"));
//# sourceMappingURL=testRouteKey.js.map
{"version":3,"file":"testRouteKey.js","sourceRoot":"","sources":["../src/testRouteKey.ts"],"names":[],"mappings":";;;;;AAAA,gFAAwD;AAExD,MAAM,SAAS,GAAG,IAAI,wBAAc,EAA0B,CAAC;AAE/D,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC1B,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC9B,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC1B,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACjC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAChC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC/B,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC/B,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC/B,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAChC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC7B,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAEjC,mDAAmD;AAEnD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAc,UAAU;AAC9D,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAQ,cAAc;AAClE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAW,UAAU;AAC9D,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAW,iBAAiB;AACrE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAW,gBAAgB;AACpE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAW,eAAe;AACnE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAK,eAAe;AACnE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAK,eAAe;AAC1E,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAQ,eAAe;AACnE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAQ,gBAAgB;AACpE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAQ,aAAa;AACjE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC"}
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const C4TrieTree_1 = __importDefault(require("./C4MQTypes/C4TrieTree"));
const tree = new C4TrieTree_1.default();
tree.insert("*", {});
tree.insert("hello", {});
tree.insert("hello2", {});
tree.insert("hellozxxz", {});
tree.insert("hexxz", {});
tree.insert("world", {});
tree.insert("你好", {});
console.log(tree.contains("你好"));
console.log(tree.contains("hell"));
console.log(tree.contains("hexxz"));
console.log(tree.contains("helz"));
console.log(tree.contains("world"));
console.log(tree.contains("worz"));
console.log("--------------------------------");
console.log(tree.match("helloaaa"));
console.log(tree.find("hell"));
console.log("--------------------------------");
console.log(JSON.stringify(tree, null, 2));
// console.log(tree.delete("hell"));
// console.log(tree.delete("hello"));
// console.log(tree.delete('hexxz'));
// console.log(JSON.stringify(tree, null ,2));
// console.log("--------------------------------");
// console.log(tree.contains("你好"));
// console.log(tree.contains("hell"));
// console.log(tree.contains("hexxz"));
// console.log(tree.contains("helz"));
// console.log(tree.contains("world"));
// console.log(tree.contains("worz"));
// console.log("--------------------------------");
// console.log(tree.match("helloaaa"));
// console.log(tree.find("hell"));
//# sourceMappingURL=testTrieTree.js.map
{"version":3,"file":"testTrieTree.js","sourceRoot":"","sources":["../src/testTrieTree.ts"],"names":[],"mappings":";;;;;AAAA,wEAA+C;AAE/C,MAAM,IAAI,GAAG,IAAI,oBAAU,EAA0B,CAAC;AAEtD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AACpB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC1B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACzB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACzB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAEtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACnC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACnC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAEnC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;AAEhD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/B,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;AAEhD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAE3C,oCAAoC;AACpC,qCAAqC;AACrC,qCAAqC;AAErC,8CAA8C;AAE9C,mDAAmD;AAEnD,oCAAoC;AACpC,sCAAsC;AACtC,uCAAuC;AACvC,sCAAsC;AACtC,uCAAuC;AACvC,sCAAsC;AAEtC,mDAAmD;AAEnD,uCAAuC;AACvC,kCAAkC"}
const gData = Symbol("data");
type IRouteNode<T> = {
[key: string]: IRouteNode<T>;
[ gData ]?: T | null;
};
export default class C4MQTopicRoute<T> {
private root: IRouteNode<T>;
constructor() {
this.root = {};
}
public insert(key: string, data: T) {
const words = key.split(".");
let cur = this.root;
for (let i = 0; i < words.length; i++) {
const curWord = words[i];
if (cur[curWord] === undefined) {
cur[curWord] = <IRouteNode<T>>{}
}
cur = cur[curWord];
}
cur[gData] = data || null;
}
protected _match(root: IRouteNode<T>, words: string[]) {
let cur = root;
let outKey = [];
let res: any = {
find: false
};
let hashKey: IRouteNode<T> | undefined = undefined;
for (let i = 0; i < words.length; i++) {
const curWord = words[i];
if (cur[curWord]) {
outKey.push(curWord);
cur = cur[curWord];
hashKey = undefined;
res.find = false;
} else {
if (hashKey) {
cur = hashKey;
continue;
}
if (cur["*"] || cur["#"]) {
if (cur["*"]) {
res = this._match(cur["*"], words.slice(i + 1));
if (res.find) {
outKey.push("*");
if (res.routeKey !== "") outKey.push(res.routeKey);
}
}
if (res.find === false && cur["#"]) {
outKey.push("#");
cur = cur["#"];
res.find = true;
if (Object.keys(cur).length === 0) {
break;
} else {
hashKey = cur;
}
continue;
}
if (res.find) {
return {
prefix: words.join("."),
routeKey: outKey.join("."),
find: true,
data: res.data
};
}
}
if (res.find === false) {
return {
prefix: words.slice(0, i).join("."),
routeKey: outKey.join("."),
find: false,
data: undefined
};
}
} // cur[curWord] === undefined
}
if (cur[gData]) {
return {
prefix: words.join("."),
routeKey: outKey.join("."),
find: cur[gData] !== undefined,
data: cur[gData]
};
} else {
return {
prefix: words.join("."),
routeKey: cur["#"] !== undefined ? outKey.join(".") + ".#" : outKey.join("."),
find: cur[gData] !== undefined || (cur["#"] !== undefined && cur["#"][gData] !== undefined),
data: cur[gData] || (cur["#"] ? cur["#"][gData] : undefined)
};
}
}
public match(key: string) {
const words = key.split(".");
return this._match(this.root, words);
}
public delete(key: string) {
const words = key.split('.');
let cur = this.root;
let detachParent: IRouteNode<T> | undefined = undefined;
let detachIndex: number = -1;
for (let i = 0; i < words.length; i++) {
const curWord = words[i];
if (cur[curWord]) {
cur = cur[curWord];
if (Object.keys(cur).length > 0) {
detachParent = cur;
detachIndex = i;
}
} else {
return {
find: false,
data: undefined
};
}
}
// 没有匹配
if (cur[gData] === undefined) {
return {
find: false,
data: undefined
};
}
// 已匹配,处理路径上的分支
const data = cur[gData];
if (detachIndex === -1) {
// 无分支
delete cur[gData];
} else { // 有分支
if (detachParent) {
// 分支在结尾处
if (words[detachIndex + 1] === undefined) {
delete detachParent[gData];
} else {
// 分支在中间
delete detachParent[words[detachIndex + 1]];
}
}
}
return {
find: true,
data
};
}
}
type INode<T> = {
[key: string]: INode<T> | T | null;
};
export default class C4TrieTree<T> {
private root: INode<T>;
constructor() {
this.root = {};
}
// 插入数据
public insert(key: string, data: T) {
let cur = this.root;
for (const c of key) {
if (cur[c] === undefined) {
cur[c] = <INode<T>>{}
}
cur = <INode<T>>(cur[c]);
}
cur["data"] = data || null;
}
// 完全匹配
public contains(key: string) {
let cur = this.root;
for (const i in <any>key) {
if (cur[(<any>key)[i]]) {
cur = <INode<T>>cur[(<any>key)[i]]
} else {
return {
prefix: key.slice(0, parseInt(i, 10)),
find: false,
data: undefined
};
}
}
return {
prefix: key,
find: cur["data"] !== undefined,
data: cur["data"]
};
}
// 前缀匹配,查找以给定key为前缀所有数据
public find(prefix: string) {
let cur = this.root;
const output: {
word: string;
data: T
}[] = [];
for (const i in <any>prefix) {
if (cur[(<any>prefix)[i]]) {
cur = <INode<T>>cur[(<any>prefix)[i]];
} else {
return [];
}
}
function _getWord(node: INode<T> | T, _prefix: string) {
if ((<any>node)["data"] !== undefined) {
output.push({
word: _prefix,
data: (<any>node)["data"]
});
}
for (const key in <any>node) {
if (key !== "data") {
_getWord((<any>node)[key], _prefix + key)
}
}
};
_getWord(cur, prefix)
return output;
}
// 与给定key有相同前缀的所有数据
public match(key: string) {
let cur = this.root;
const output = [];
let i = 0;
for (; i < key.length; i++) {
if (cur["data"] !== undefined) {
output.push({
word: key.slice(0, i),
data: cur["data"]
});
}
if (cur[key[i]]) {
cur = <INode<T>>cur[key[i]];
} else {
break;
}
}
if (i >= key.length) {
if (cur["data"] !== undefined) {
output.push({
word: key.slice(0, i),
data: cur["data"]
});
}
}
return output;
}
// 根据key删除数据
public delete(key: string) {
let cur = this.root;
let detachParent: INode<T> | undefined = undefined;
let detachIndex: number = -1;
for (const i in <any>key) {
if (cur[(<any>key)[i]]) {
cur = <INode<T>>cur[(<any>key)[i]];
if (Object.keys(<any>cur).length > 1) {
detachParent = cur;
detachIndex = parseInt(i, 10);
}
} else {
return {
find: false,
data: undefined
};
}
}
if (cur["data"] == undefined) {
return {
find: false,
data: undefined
}
}
const data = cur["data"];
if (detachIndex === -1) {
delete cur.data;
return {
find: true,
data
};
} else {
if (detachParent) {
if ((<any>key)[detachIndex + 1] === undefined) {
delete detachParent.data;
} else {
delete detachParent[(<any>key)[detachIndex + 1]]
}
}
return {
find: true,
data
};
}
}
}
function TestTopic() {
console.log("123")
return {
publisherName: "TestPublisher2",
routingKey: "testKey.*",
subscribeOption: {
ack: true,
prefetchCount: 6 // 预读取数量
},
CBs: {
Test: async function(msg: any,
headers: any,
deliveryInfo: any,
ack: any) {
console.log(msg);
return true;
}
}
}
}
exports.default = TestTopic;
import C4MQTopicRoute from "./C4MQTypes/C4MQTopicRoute";
const routeKeys = new C4MQTopicRoute<{[key:string]: string}>();
routeKeys.insert("*", {});
routeKeys.insert("*.*.*", {});
routeKeys.insert("#", {});
routeKeys.insert("aa.bb.cc", {});
routeKeys.insert("aa.*.cc", {});
routeKeys.insert("*.bb.*", {});
routeKeys.insert("#.aa.#", {});
routeKeys.insert("#.bb.*", {});
routeKeys.insert("#.bb.cc", {});
routeKeys.insert("#.cc", {});
routeKeys.insert("#.aa.#.#", {});
// console.log(JSON.stringify(routeKeys, null, 2));
console.log(routeKeys.match("abcde")); // match *
console.log(routeKeys.match("abcde.ee.zz")); // match *.*.*
console.log(routeKeys.match("abcde.ee")); // match #
console.log(routeKeys.match("aa.bb.cc")); // match aa.bb.cc
console.log(routeKeys.match("aa.zz.cc")); // match aa.*.cc
console.log(routeKeys.match("zz.bb.yy")); // match *.bb.*
console.log(routeKeys.match("abced.ee.zz.aa")); // match #.aa.#
console.log(routeKeys.match("abced.ee.zz.aa.aa.zzz")); // match #.aa.#
console.log(routeKeys.match("mm.dd.bb.aa")); // match #.bb.*
console.log(routeKeys.match("mm.dd.bb.cc")); // match #.bb.cc
console.log(routeKeys.match("mm.dd.zz.cc")); // match #.cc
console.log(routeKeys.match("*.*.cc"));
import C4TrieTree from './C4MQTypes/C4TrieTree'
const tree = new C4TrieTree<{[key:string]: string}>();
tree.insert("*", {})
tree.insert("hello", {});
tree.insert("hello2", {});
tree.insert("hellozxxz", {});
tree.insert("hexxz", {});
tree.insert("world", {});
tree.insert("你好", {});
console.log(tree.contains("你好"));
console.log(tree.contains("hell"));
console.log(tree.contains("hexxz"));
console.log(tree.contains("helz"));
console.log(tree.contains("world"));
console.log(tree.contains("worz"));
console.log("--------------------------------");
console.log(tree.match("helloaaa"));
console.log(tree.find("hell"));
console.log("--------------------------------");
console.log(JSON.stringify(tree, null ,2));
// console.log(tree.delete("hell"));
// console.log(tree.delete("hello"));
// console.log(tree.delete('hexxz'));
// console.log(JSON.stringify(tree, null ,2));
// console.log("--------------------------------");
// console.log(tree.contains("你好"));
// console.log(tree.contains("hell"));
// console.log(tree.contains("hexxz"));
// console.log(tree.contains("helz"));
// console.log(tree.contains("world"));
// console.log(tree.contains("worz"));
// console.log("--------------------------------");
// console.log(tree.match("helloaaa"));
// console.log(tree.find("hell"));
+0
-1

@@ -1,2 +0,1 @@

/// <reference types="node" />
import { AMQPExchange } from "amqp";

@@ -3,0 +2,0 @@ import { ExchangeOptions, ExchangePublishOptions } from "./C4MQTypes/C4MQTypes";

@@ -147,3 +147,3 @@ "use strict";

else {
res = yield subscriber.subscribe().then(() => true).catch((err) => {
res = yield subscriber.subscribeEx().then(() => true).catch((err) => {
self.mLogger.error(err);

@@ -180,3 +180,3 @@ return false;

const curSub = this.mSubscribeLater[key];
yield curSub.subscribe();
yield curSub.subscribeEx();
}

@@ -183,0 +183,0 @@ return true;

@@ -1,1 +0,1 @@

{"version":3,"file":"C4MQHelper.js","sourceRoot":"","sources":["../src/C4MQHelper.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"C4MQHelper.js","sourceRoot":"","sources":["../src/C4MQHelper.ts"],"names":[],"mappings":"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"}

@@ -1,2 +0,1 @@

/// <reference types="node" />
import { C4PublisherOption, ExchangePublishOptions } from "./C4MQTypes/C4MQTypes";

@@ -3,0 +2,0 @@ import C4MQ from "./C4MQ";

@@ -67,3 +67,3 @@ import { AMQPQueue } from "amqp";

/**
* 去消息并处理
* 取消息并处理
* @param CB 消息处理方法

@@ -70,0 +70,0 @@ * 订阅消息时没有设置处理方法,则会进行内部处理,然后使用该方法进行单个消息的处理

@@ -194,3 +194,3 @@ "use strict";

/**
* 去消息并处理
* 取消息并处理
* @param CB 消息处理方法

@@ -197,0 +197,0 @@ * 订阅消息时没有设置处理方法,则会进行内部处理,然后使用该方法进行单个消息的处理

@@ -9,2 +9,3 @@ import C4MQ from "./C4MQ";

private m_CBs;
private m_ExCBs;
constructor();

@@ -23,2 +24,4 @@ /**

addSubscribe(option: C4SubscribeOption): boolean;
subscribeEx(): Promise<void>;
__processMsgEx(): Promise<void>;
/**

@@ -25,0 +28,0 @@ * 开始订阅

@@ -18,2 +18,3 @@ "use strict";

const c4utils_1 = require("c4utils");
const C4MQTopicRoute_1 = __importDefault(require("./C4MQTypes/C4MQTopicRoute"));
class C4Subscriber {

@@ -28,2 +29,3 @@ constructor() {

this.m_Logger = null;
this.m_ExCBs = {};
}

@@ -89,2 +91,102 @@ /**

}
subscribeEx() {
return __awaiter(this, void 0, void 0, function* () {
if (!this.isInit()) {
if (this.m_Logger) {
(this.m_Logger.err && this.m_Logger.err("C4Subscriber subscribeEx : Not init.")) ||
(this.m_Logger.error && this.m_Logger.error("C4Subscriber subscribeEx : Not init."));
}
throw new Error("C4Subscriber subscribeEx : Not init.");
}
for (let i = 0; i < this.m_SubscribeOptions.length; i++) {
const curSubOption = this.m_SubscribeOptions[i];
let PublisherName = curSubOption.publisherName || "";
let RoutingKey = curSubOption.routingKey || "";
if (PublisherName !== "") {
// 配置了Exchange
yield this.m_Queue.bindExchange(PublisherName, RoutingKey);
yield this.m_Queue.subscribe(curSubOption.subscribeOption);
}
else {
// 没有Exchange,绑定到默认设置的Exchagne上
yield this.m_Queue.bindExchange(this.m_DefaultPublisher, RoutingKey);
yield this.m_Queue.subscribe(curSubOption.subscribeOption);
PublisherName = C4MQTypes_1.DEFAULT_PUBLISHER;
}
RoutingKey = RoutingKey || C4MQTypes_1.DEFAULT_ROUTE;
if (c4utils_1.TypeUtils.isEmptyObj(this.m_ExCBs[PublisherName])) {
this.m_ExCBs[PublisherName] = new C4MQTopicRoute_1.default();
}
let data = this.m_ExCBs[PublisherName].match(RoutingKey);
if (data.find != true) {
this.m_ExCBs[PublisherName].insert(RoutingKey, {});
}
data = this.m_ExCBs[PublisherName].match(RoutingKey);
if (data.data == null) {
throw new Error("C4Subscriber subscribeEx : Unknown error.");
}
for (const key in curSubOption.CBs) {
data.data[key] = curSubOption.CBs[key];
}
}
this.__processMsgEx();
});
}
__processMsgEx() {
return __awaiter(this, void 0, void 0, function* () {
const Self = this;
yield this.m_Queue.peekMsg(function (message, headers, deliveryInfo, ack) {
return __awaiter(this, void 0, void 0, function* () {
const curExchangeName = deliveryInfo.exchange;
const curRoutingKey = deliveryInfo.routingKey;
const curMsgType = message.msgType;
if (curMsgType) {
let res = false;
try {
let curMsgHandler = null;
do {
if (c4utils_1.TypeUtils.isEmptyObj(Self.m_ExCBs[curExchangeName]))
break;
const cbs = Self.m_ExCBs[curExchangeName].match(curRoutingKey);
if (cbs.find !== true)
break;
if (c4utils_1.TypeUtils.isEmptyObj(cbs.data) || c4utils_1.TypeUtils.isNullOrUndefined(cbs.data[curMsgType]))
break;
curMsgHandler = cbs.data[curMsgType];
} while (false);
if (null === curMsgHandler) {
if (Self.m_Logger) {
let err = `C4Subscriber process msg : can't find Msg Handler.ExN : ${curExchangeName}, RK : ${curRoutingKey}, MT : ${curMsgType}.`;
Self.m_Logger.err ? Self.m_Logger.err(err) : Self.m_Logger.error(err);
}
// return null; // 没有找到任何合适的处理方法,重新入队
return false; // 没有找到合适的处理方法,抛弃消息
}
res = yield curMsgHandler(message, headers, deliveryInfo, ack);
}
catch (error) {
if (Self.m_Logger) {
(Self.m_Logger.err && Self.m_Logger.err(error)) ||
(Self.m_Logger.error && Self.m_Logger.error(error));
// 重新入队 res = null;
// 不再重排
res = false;
}
else {
throw error;
}
}
return res;
}
else {
// 消息格式错误,抛弃
return false;
}
});
});
setTimeout(() => {
Self.__processMsgEx();
}, 20);
});
}
/**

@@ -147,2 +249,3 @@ * 开始订阅

return __awaiter(this, void 0, void 0, function* () {
// TODO: 使用trieTree进行RoutingKey的匹配
let CurExchangeName = deliveryInfo.exchange;

@@ -149,0 +252,0 @@ let CurRoutingKey = deliveryInfo.routingKey;

@@ -1,1 +0,1 @@

{"version":3,"file":"C4Subscriber.js","sourceRoot":"","sources":["../src/C4Subscriber.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"C4Subscriber.js","sourceRoot":"","sources":["../src/C4Subscriber.ts"],"names":[],"mappings":"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"}
+154
-234

@@ -15,10 +15,20 @@ "use strict";

const C4MQHelper_1 = __importDefault(require("./C4MQHelper"));
const C4MQ_1 = __importDefault(require("./C4MQ"));
const C4Publisher_1 = __importDefault(require("./C4Publisher"));
const C4Subscriber_1 = __importDefault(require("./C4Subscriber"));
const testHandler_1 = require("./testHandler");
const mqHost = "";
const mqLogin = "";
const mqPassword = "";
let MQConn;
let CurPublihser;
// let CurPublihser2 : C4Publisher;
let CurPublihser2;
let CurSubscriber;
let Count = 0;
let Begin = 0;
let End = 0;
function Publish() {
let Count0 = 0;
let Begin0 = 0;
let End0 = 0;
let Count1 = 0;
let Begin1 = 0;
let End1 = 0;
function Publish0() {
if (undefined === CurPublihser) {

@@ -29,20 +39,88 @@ return;

msgType: "Hello",
msg: Count++
msg: Count0++
});
// CurPublihser2.publish({
// msgType : "Test",
// msg : Count + 10
// }, "testKey1")
if (Count > 10) {
End = (new Date()).getTime();
console.log("Used : " + (End - Begin));
if (Count0 > 10) {
End0 = (new Date()).getTime();
console.log("Used : " + (End0 - Begin0));
}
else {
setTimeout(() => {
Publish();
Publish0();
}, 0);
}
}
function Launch() {
function Publish1() {
if (undefined === CurPublihser) {
return;
}
Count1++;
CurPublihser2.publish({
msgType: "Test",
msg: Count1 + 10
}, "testKey.abcz");
if (Count1 > 10) {
Count1 = 0;
End1 = (new Date()).getTime();
console.log("Used : " + (End1 - Begin1));
}
else {
setTimeout(() => {
Publish1();
}, 0);
}
}
// 不是用C4MQHelper的示例
function SampleUseBaseObject() {
return __awaiter(this, void 0, void 0, function* () {
MQConn = new C4MQ_1.default();
try {
yield MQConn.init({
host: mqHost,
port: 5672,
login: mqLogin,
password: mqPassword,
connectionTimeout: 30000,
authMechanism: "AMQPLAIN",
vhost: "/",
noDelay: true,
heartbeat: 50,
clientProperties: {
applicationName: "C4MQ"
}
}, console);
}
catch (error) {
console.log(error);
process.exit(-1);
}
CurPublihser = new C4Publisher_1.default();
let Res = yield CurPublihser.init(MQConn, {
name: "C4MQTestExchange0",
routingKey: "testKey",
type: 'direct',
durable: true,
autoDelete: false,
confirm: true,
publicOption: {}
}, console);
CurSubscriber = new C4Subscriber_1.default();
Res = yield CurSubscriber.init(MQConn, {
name: "C4MQTestQueue0",
publisherName: "C4MQTestExchange0",
durable: true,
autoDelete: false
}, console);
if (!Res) {
process.exit(-1);
}
CurSubscriber.addMQHandler(["Hello"]);
CurSubscriber.addSubscribe(testHandler_1.defineHandler());
yield CurSubscriber.subscribeEx();
Begin0 = (new Date()).getTime();
Publish0();
});
}
// 使用C4MQHelper和注解方式声明消息处理方法的实例
function SampleUseAnnotaion() {
return __awaiter(this, void 0, void 0, function* () {
const curHelper = yield C4MQHelper_1.default.create({

@@ -52,6 +130,6 @@ connections: [

name: "TestMQConnection",
host: "",
host: mqHost,
port: 5672,
login: "",
password: "",
login: mqLogin,
password: mqPassword,
connectionTimeout: 30000,

@@ -97,225 +175,67 @@ authMechanism: "AMQPLAIN",

CurPublihser = curHelper.getPublisher("TestPublisher");
Begin = (new Date()).getTime();
Publish();
Begin0 = (new Date()).getTime();
Publish0();
}
// MQConn = new C4MQ();
// try {
// await MQConn.init({
// host : "", // <any>[ "host0", "host1", "host2" ] // 连接Cluster
// port : 5672,
// login : "",
// password : "",
// connectionTimeout : 30000,
// authMechanism : "AMQPLAIN",
// vhost : "/",
// noDelay : true,
// heartbeat : 50,
// clientProperties : {
// applicationName : "C4MQ"
// }
// }, console);
// } catch (error) {
// console.log(error);
// process.exit(-1);
// }
// CurPublihser = new C4Publisher();
// let Res = await CurPublihser.init(MQConn, {
// name : "C4MQTestExchange0",
// routingKey : "testKey",
// type : 'direct',
// durable : true,
// autoDelete : false,
// confirm : true,
// publicOption : {
// }
// }, console);
// CurPublihser2 = new C4Publisher();
// Res = await CurPublihser2.init(MQConn, {
// name : "C4MQTestExchange2",
// routingKey : "testKey1",
// type : 'topic',
// durable : true,
// autoDelete : false,
// confirm : true,
// publicOption : {
// }
// }, console)
// if (!Res) {
// process.exit(-1);
// }
// CurSubscriber = new C4Subscriber();
// let Res = await CurSubscriber.init(MQConn, {
// name : "C4MQTestQueue0",
// publisherName : "C4MQTestExchange0",
// durable : true,
// autoDelete : false
// }, console);
// if (!Res) {
// process.exit(-1);
// }
// if (!Res) {
// process.exit(-1);
// }
// CurSubscriber.addMQHandler(["Hello"]);
// CurSubscriber.addSubscribe(defineHandler());
// // CurSubscriber.addSubscribe({
// // //
// // });
// await CurSubscriber.subscribe();
// Begin = (new Date()).getTime();
// Publish();
//
});
}
Launch();
/* import C4MQ from './C4MQ';
import C4Exchange from './C4Exchange';
import C4Queue from './C4Queue';
import * as C4MQTypes from './C4MQTypes/C4MQTypes';
import { AMQPClient } from 'amqp';
import { CONNREFUSED } from 'dns';
let MQConn : C4MQ;
let CurExchange : C4Exchange;
let CurQueue : C4Queue;
let DLX : C4Exchange;
let DLQ : C4Queue;
let Count = 0;
let Begin = 0;
let End = 0;
function Publish() {
if (undefined === CurExchange) {
return;
}
// let CurPriority = parseInt((Math.random() * 10).toString());
// console.log("CurMsg : " + Count + ", Priority : " + CurPriority);
CurExchange.publish("testKey", {
msg : Count++
}, {
// priority : CurPriority
expiration : "10000"
});
if (Count > 10) {
End = (new Date()).getTime();
console.log("Used : " + (End - Begin));
process.exit(-1);
}
setTimeout(() => {
Publish();
}, 0);
}
function ProcessMsg() {
if (undefined === CurQueue) {
return;
}
CurQueue.peekMsg((message, headers, deliveryInfo, ack) => {
Count++;
console.log(JSON.stringify(message));
console.log(JSON.stringify(headers));
console.log(JSON.stringify(deliveryInfo, null, 4));
return true;
});
if (Count >= 99999) {
End = (new Date()).getTime();
console.log("Used : " + (End - Begin));
process.exit(-1);
}
setTimeout(() => {
ProcessMsg();
}, 0);
}
async function Launch() {
MQConn = new C4MQ();
try {
await MQConn.init({
host : "host",
port : 5672,
login : "username",
password : "password",
connectionTimeout : 30000,
authMechanism : "AMQPLAIN",
vhost : "/",
noDelay : true,
heartbeat : 5,
clientProperties : {
applicationName : "C4MQ"
}
// 使用C4MQHelper和对象方式声明消息处理方法的实例
function SampleUseObject() {
return __awaiter(this, void 0, void 0, function* () {
const curHelper = yield C4MQHelper_1.default.create({
connections: [
{
name: "TestMQConnection",
host: mqHost,
port: 5672,
login: mqLogin,
password: mqPassword,
connectionTimeout: 30000,
authMechanism: "AMQPLAIN",
vhost: "/",
noDelay: true,
heartbeat: 50,
clientProperties: {
applicationName: "C4MQ"
}
}
],
publishers: [
{
name: "TestPublisher2",
connection: "TestMQConnection",
routingKey: "testKey.abc",
type: "topic",
durable: true,
autoDelete: false,
confirm: true,
publicOption: {}
}
],
subscribers: [
{
name: "TestSubscriber2",
connection: "TestMQConnection",
publisherName: "TestPublisher2",
durable: true,
autoDelete: false,
handlers: ["TestTopic"],
subscribeLater: false
}
],
handlerLoadPaths: [
'./out/MQHandlers'
]
}, console);
} catch (error) {
console.log(error);
process.exit(-1);
}
CurExchange = new C4Exchange();
DLX = new C4Exchange();
await CurExchange.declared(MQConn, "C4MQTestExchange", {
type : 'direct',
durable : true,
autoDelete : false,
confirm : true
});
await DLX.declared(MQConn, "C4MQTestDLX", {
type : "topic",
durable : true,
autoDelete : false,
confirm : true
});
console.log('xxxx')
CurQueue = new C4Queue();
DLQ = new C4Queue();
await CurQueue.declared(MQConn, "C4MQTestQueue", {
durable : true,
autoDelete : false,
arguments : {
"x-max-priority" : 10,
"x-message-ttl" : 60000,
"x-dead-letter-exchange" : "C4MQTestDLX",
"x-dead-letter-routing-key" : "testKey"
if (curHelper) {
CurPublihser = curHelper.getPublisher("TestPublisher");
CurPublihser2 = curHelper.getPublisher("TestPublisher2");
Begin1 = (new Date()).getTime();
Publish1();
}
});
await DLQ.declared(MQConn, "C4MQTestDLQ", {
durable : true,
autoDelete : false
});
console.log('zzzzz')
await CurQueue.bindExchange("C4MQTestExchange", "testKey");
await CurQueue.bindExchange("C4MQTestExchange", "123");
await DLQ.bindExchange("C4MQTestDLX", "#");
CurQueue.subscribe({
ack : true,
prefetchCount : 16
});
Begin = (new Date()).getTime();
// Publish();
// Publish();
// Publish();
// Publish();
// Publish();
// Publish();
// Publish();
Publish();
// ProcessMsg();
// ProcessMsg();
// ProcessMsg();
// ProcessMsg();
// ProcessMsg();
// ProcessMsg();
// ProcessMsg();
// ProcessMsg();
}
Launch(); */
// 解注释执行相应的示例代码
// SampleUseBaseObject();
// SampleUseAnnotaion();
// SampleUseObject();
//# sourceMappingURL=main.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,8DAAsC;AAMtC,IAAI,MAAa,CAAC;AAClB,IAAI,YAA2B,CAAC;AAChC,mCAAmC;AACnC,IAAI,aAA4B,CAAC;AAEjC,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,IAAI,GAAG,GAAK,CAAC,CAAC;AAEd,SAAS,OAAO;IACZ,IAAI,SAAS,KAAK,YAAY,EAAE;QAC5B,OAAO;KACV;IAED,YAAY,CAAC,OAAO,CAAC;QACjB,OAAO,EAAG,OAAO;QACjB,GAAG,EAAG,KAAK,EAAE;KAChB,CAAC,CAAC;IAEH,0BAA0B;IAC1B,wBAAwB;IACxB,uBAAuB;IACvB,iBAAiB;IAEjB,IAAI,KAAK,GAAG,EAAE,EAAE;QACZ,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;KAC1C;SAAM;QACH,UAAU,CAAC,GAAG,EAAE;YACZ,OAAO,EAAE,CAAC;QACd,CAAC,EAAE,CAAC,CAAC,CAAC;KACT;AACL,CAAC;AAED,SAAe,MAAM;;QAEnB,MAAM,SAAS,GAAG,MAAM,oBAAU,CAAC,MAAM,CAAC;YACxC,WAAW,EAAE;gBACX;oBACE,IAAI,EAAE,kBAAkB;oBACxB,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,EAAE;oBACT,QAAQ,EAAE,EAAE;oBACZ,iBAAiB,EAAE,KAAK;oBACxB,aAAa,EAAE,UAAU;oBACzB,KAAK,EAAE,GAAG;oBACV,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,EAAE;oBACb,gBAAgB,EAAE;wBAChB,eAAe,EAAE,MAAM;qBACxB;iBACF;aACF;YACD,UAAU,EAAE;gBACV;oBACE,IAAI,EAAE,eAAe;oBACrB,UAAU,EAAE,kBAAkB;oBAC9B,UAAU,EAAE,SAAS;oBACrB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,KAAK;oBACjB,OAAO,EAAE,IAAI;oBACb,YAAY,EAAE,EAAE;iBACjB;aACF;YACD,WAAW,EAAE;gBACX;oBACE,IAAI,EAAE,gBAAgB;oBACtB,UAAU,EAAE,kBAAkB;oBAC9B,aAAa,EAAE,eAAe;oBAC9B,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,KAAK;oBACjB,QAAQ,EAAE,CAAC,OAAO,CAAC;oBACnB,cAAc,EAAE,KAAK;iBACtB;aACF;YACD,gBAAgB,EAAE;gBAChB,kBAAkB;aACnB;YACD,WAAW,EAAE,UAAU;SACxB,EAAE,OAAO,CAAC,CAAC;QAEZ,IAAI,SAAS,EAAE;YACb,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;YACvD,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;SACX;QAKC,uBAAuB;QACvB,QAAQ;QACR,0BAA0B;QAC1B,yEAAyE;QACzE,uBAAuB;QACvB,sBAAsB;QACtB,yBAAyB;QACzB,qCAAqC;QACrC,sCAAsC;QACtC,uBAAuB;QACvB,0BAA0B;QAC1B,0BAA0B;QAC1B,+BAA+B;QAC/B,uCAAuC;QACvC,YAAY;QACZ,mBAAmB;QACnB,oBAAoB;QACpB,0BAA0B;QAC1B,wBAAwB;QACxB,IAAI;QAEJ,uCAAuC;QACvC,8CAA8C;QAC9C,kCAAkC;QAClC,8BAA8B;QAC9B,uBAAuB;QACvB,sBAAsB;QACtB,0BAA0B;QAC1B,sBAAsB;QACtB,uBAAuB;QAEvB,QAAQ;QACR,eAAe;QAEf,uCAAuC;QACvC,2CAA2C;QAC3C,kCAAkC;QAClC,+BAA+B;QAC/B,sBAAsB;QACtB,sBAAsB;QACtB,0BAA0B;QAC1B,sBAAsB;QACtB,uBAAuB;QAEvB,QAAQ;QACR,cAAc;QAEd,cAAc;QACd,wBAAwB;QACxB,IAAI;QAEJ,wCAAwC;QACxC,+CAA+C;QAC/C,+BAA+B;QAC/B,2CAA2C;QAC3C,sBAAsB;QACtB,yBAAyB;QACzB,eAAe;QACf,cAAc;QACd,wBAAwB;QACxB,IAAI;QAEJ,cAAc;QACd,wBAAwB;QACxB,IAAI;QAEJ,yCAAyC;QACzC,+CAA+C;QAC/C,kCAAkC;QAClC,YAAY;QACZ,SAAS;QACT,mCAAmC;QACnC,kCAAkC;QAClC,aAAa;QACb,EAAE;IACN,CAAC;CAAA;AAED,MAAM,EAAE,CAAC;AAET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAqJY"}
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
{
"name": "c4-mq",
"version": "0.0.5",
"version": "0.0.6",
"description": "C4FrameworkMQ",

@@ -5,0 +5,0 @@ "main": "out",

@@ -28,4 +28,6 @@ <!-- # 通过C4MQ来创建连接

* 使用MQHandler注解对方法进行标记,提供消息处理方法;
#### 快速上手示例,参考./src/main.ts
#### 使用MQHandler注解对方法进行标记,提供消息处理方法;
* 注解项包含:

@@ -54,2 +56,33 @@

#### 也可以声明对象的方式(JS环境下不能使用注解时),提供消息处理方法:
* 对象包含:
```
{
publisherName: "要绑定得Exchange(Publisher)名",
routingKey: "route key,现在支持 * 和 # 通配符",
subscribeOption: {
ack: true, // true为手动ack,建议使用
prefetchCount: 6 // 预读取数量(提高读取性能),使用手动ack时,不会对可靠性造成影响
},
CBs: { // 消息处理函数
“msgType 的值,与要处理的msgType值一一对应”: async function(msg: any,
headers: any,
deliveryInfo: any,
ack: any) {
console.log(msg);
return true;
// 可选的返回值有true,false和null
// true代表消息已经正确处理,rabbitmq可以将该消息删除
// false表示处理消息时出现错误,且订阅端希望抛弃这条消息(rabbitmq也会将该消息删除)
// null表示处理消息时出现错误,但是订阅端希望消息得以保留(rabbitmq会将该消息重新入队)
}
}
}
```
* 具体示例参考./src/MQHandlers/TestTopic.ts
注意:注解方式和对象方式声明的消息处理方法不能配置时同时加载,加载注解方式声明的handler时,C4MQHelper的配置中handlerType为"standard",使用对象方式声明时,handlerType为undefined
<h3>类s</h3>

@@ -528,2 +561,13 @@

* subscribeEx
```
/**
* 开始订阅(支持 * 和 # 通配符的route key)
*/
async subscribeEx()
```
<hr>
* __processMsg

@@ -540,2 +584,13 @@

* __processMsgEx
```
/**
* 消息处理方法(支持 * 和 # 通配符的route key)
*/
async __processMsgEx()
```
<hr>
* addMQHandler

@@ -542,0 +597,0 @@

@@ -131,3 +131,3 @@ import C4MQ from './C4MQ';

} else {
res = await subscriber.subscribe().then(() => true).catch((err) => {
res = await subscriber.subscribeEx().then(() => true).catch((err) => {
self.mLogger.error(err);

@@ -159,3 +159,3 @@ return false;

const curSub = this.mSubscribeLater[key];
await curSub.subscribe();
await curSub.subscribeEx();
}

@@ -162,0 +162,0 @@ return true;

@@ -205,3 +205,3 @@ import { AMQPClient, AMQPQueue } from "amqp";

/**
* 去消息并处理
* 取消息并处理
* @param CB 消息处理方法

@@ -208,0 +208,0 @@ * 订阅消息时没有设置处理方法,则会进行内部处理,然后使用该方法进行单个消息的处理

@@ -6,3 +6,10 @@ import C4MQ from "./C4MQ";

import { TypeUtils } from "c4utils";
import C4MQTopicRoute from "./C4MQTypes/C4MQTopicRoute";
import { DeliveryInfo, Ack } from './C4MQTypes/C4MQTypes';
type MsgCB = (message : any,
headers : {[key : string] : any},
deliveryInfo : DeliveryInfo,
ack : Ack) => Promise<boolean> | boolean;
export default class C4Subscriber {

@@ -20,2 +27,6 @@

private m_ExCBs : {
[key: string]: C4MQTopicRoute<{[key: string]: MsgCB}>
}
constructor() {

@@ -29,2 +40,3 @@ this.m_Queue = null;

this.m_Logger = null;
this.m_ExCBs = {};
}

@@ -97,2 +109,102 @@

async subscribeEx() {
if (!this.isInit()) {
if (this.m_Logger) {
(this.m_Logger.err && this.m_Logger.err("C4Subscriber subscribeEx : Not init.")) ||
(this.m_Logger.error && this.m_Logger.error("C4Subscriber subscribeEx : Not init."));
}
throw new Error("C4Subscriber subscribeEx : Not init.");
}
for (let i = 0; i < this.m_SubscribeOptions.length; i++) {
const curSubOption = this.m_SubscribeOptions[i];
let PublisherName = curSubOption.publisherName || "";
let RoutingKey = curSubOption.routingKey || "";
if (PublisherName !== "") {
// 配置了Exchange
await (<C4Queue>this.m_Queue).bindExchange(PublisherName, RoutingKey);
await (<C4Queue>this.m_Queue).subscribe(curSubOption.subscribeOption);
} else {
// 没有Exchange,绑定到默认设置的Exchagne上
await (<C4Queue>this.m_Queue).bindExchange(this.m_DefaultPublisher, RoutingKey);
await (<C4Queue>this.m_Queue).subscribe(curSubOption.subscribeOption);
PublisherName = DEFAULT_PUBLISHER;
}
RoutingKey = RoutingKey || DEFAULT_ROUTE;
if (TypeUtils.isEmptyObj(this.m_ExCBs[PublisherName])) {
this.m_ExCBs[PublisherName] = new C4MQTopicRoute<{[key: string]: MsgCB}>();
}
let data = this.m_ExCBs[PublisherName].match(RoutingKey);
if (data.find != true) {
this.m_ExCBs[PublisherName].insert(RoutingKey, {})
}
data = this.m_ExCBs[PublisherName].match(RoutingKey);
if (data.data == null ) {
throw new Error("C4Subscriber subscribeEx : Unknown error.");
}
for (const key in curSubOption.CBs) {
data.data[key] = curSubOption.CBs[key];
}
}
this.__processMsgEx();
}
async __processMsgEx() {
const Self = this;
await (<C4Queue>this.m_Queue).peekMsg(async function(message, headers, deliveryInfo, ack) {
const curExchangeName = deliveryInfo.exchange;
const curRoutingKey = deliveryInfo.routingKey;
const curMsgType = message.msgType;
if (curMsgType) {
let res = false;
try {
let curMsgHandler = null;
do {
if (TypeUtils.isEmptyObj(Self.m_ExCBs[curExchangeName])) break;
const cbs = Self.m_ExCBs[curExchangeName].match(curRoutingKey);
if (cbs.find !== true) break;
if (TypeUtils.isEmptyObj(cbs.data) || TypeUtils.isNullOrUndefined(cbs.data[curMsgType])) break;
curMsgHandler = cbs.data[curMsgType]
} while(false);
if (null === curMsgHandler) {
if (Self.m_Logger) {
let err = `C4Subscriber process msg : can't find Msg Handler.ExN : ${curExchangeName}, RK : ${curRoutingKey}, MT : ${curMsgType}.`;
Self.m_Logger.err ? Self.m_Logger.err(err) : Self.m_Logger.error(err);
}
// return null; // 没有找到任何合适的处理方法,重新入队
return false; // 没有找到合适的处理方法,抛弃消息
}
res = await curMsgHandler(message, headers, deliveryInfo, ack);
} catch (error) {
if (Self.m_Logger) {
(Self.m_Logger.err && Self.m_Logger.err(error)) ||
(Self.m_Logger.error && Self.m_Logger.error(error));
// 重新入队 res = null;
// 不再重排
res = false;
} else {
throw error;
}
}
return res;
} else {
// 消息格式错误,抛弃
return false;
}
});
setTimeout(() => {
Self.__processMsgEx();
}, 20);
}
/**

@@ -157,2 +269,3 @@ * 开始订阅

// TODO: 使用trieTree进行RoutingKey的匹配
let CurExchangeName = deliveryInfo.exchange;

@@ -159,0 +272,0 @@ let CurRoutingKey = deliveryInfo.routingKey;

+153
-248

@@ -7,12 +7,19 @@ import C4MQHelper from './C4MQHelper';

const mqHost = "";
const mqLogin = "";
const mqPassword = "";
let MQConn : C4MQ;
let CurPublihser : C4Publisher;
// let CurPublihser2 : C4Publisher;
let CurPublihser2 : C4Publisher;
let CurSubscriber : C4Subscriber;
let Count = 0;
let Begin = 0;
let End = 0;
let Count0 = 0;
let Begin0 = 0;
let End0 = 0;
let Count1 = 0;
let Begin1 = 0;
let End1 = 0;
function Publish() {
function Publish0() {
if (undefined === CurPublihser) {

@@ -24,16 +31,11 @@ return;

msgType : "Hello",
msg : Count++
msg : Count0++
});
// CurPublihser2.publish({
// msgType : "Test",
// msg : Count + 10
// }, "testKey1")
if (Count > 10) {
End = (new Date()).getTime();
console.log("Used : " + (End - Begin));
if (Count0 > 10) {
End0 = (new Date()).getTime();
console.log("Used : " + (End0 - Begin0));
} else {
setTimeout(() => {
Publish();
Publish0();
}, 0);

@@ -43,4 +45,78 @@ }

async function Launch() {
function Publish1() {
if (undefined === CurPublihser) {
return;
}
Count1++;
CurPublihser2.publish({
msgType : "Test",
msg : Count1 + 10
}, "testKey.abcz")
if (Count1 > 10) {
Count1 = 0;
End1 = (new Date()).getTime();
console.log("Used : " + (End1 - Begin1));
} else {
setTimeout(() => {
Publish1();
}, 0);
}
}
// 不是用C4MQHelper的示例
async function SampleUseBaseObject() {
MQConn = new C4MQ();
try {
await MQConn.init({
host : mqHost, // <any>[ "host0", "host1", "host2" ] // 连接Cluster
port : 5672,
login : mqLogin,
password : mqPassword,
connectionTimeout : 30000,
authMechanism : "AMQPLAIN",
vhost : "/",
noDelay : true,
heartbeat : 50,
clientProperties : {
applicationName : "C4MQ"
}
}, console);
} catch (error) {
console.log(error);
process.exit(-1);
}
CurPublihser = new C4Publisher();
let Res = await CurPublihser.init(MQConn, {
name : "C4MQTestExchange0",
routingKey : "testKey",
type : 'direct',
durable : true,
autoDelete : false,
confirm : true,
publicOption : {}
}, console);
CurSubscriber = new C4Subscriber();
Res = await CurSubscriber.init(MQConn, {
name : "C4MQTestQueue0",
publisherName : "C4MQTestExchange0",
durable : true,
autoDelete : false
}, console);
if (!Res) {
process.exit(-1);
}
CurSubscriber.addMQHandler(["Hello"]);
CurSubscriber.addSubscribe(defineHandler());
await CurSubscriber.subscribeEx();
Begin0 = (new Date()).getTime();
Publish0();
}
// 使用C4MQHelper和注解方式声明消息处理方法的实例
async function SampleUseAnnotaion() {
const curHelper = await C4MQHelper.create({

@@ -50,6 +126,6 @@ connections: [

name: "TestMQConnection",
host: "", // <any>[ "host0", "host1", "host2" ] // 连接Cluster
host: mqHost, // <any>[ "host0", "host1", "host2" ] // 连接Cluster
port: 5672,
login: "",
password: "",
login: mqLogin,
password: mqPassword,
connectionTimeout: 30000,

@@ -96,238 +172,67 @@ authMechanism: "AMQPLAIN",

CurPublihser = curHelper.getPublisher("TestPublisher");
Begin = (new Date()).getTime();
Publish();
Begin0 = (new Date()).getTime();
Publish0();
}
// MQConn = new C4MQ();
// try {
// await MQConn.init({
// host : "", // <any>[ "host0", "host1", "host2" ] // 连接Cluster
// port : 5672,
// login : "",
// password : "",
// connectionTimeout : 30000,
// authMechanism : "AMQPLAIN",
// vhost : "/",
// noDelay : true,
// heartbeat : 50,
// clientProperties : {
// applicationName : "C4MQ"
// }
// }, console);
// } catch (error) {
// console.log(error);
// process.exit(-1);
// }
// CurPublihser = new C4Publisher();
// let Res = await CurPublihser.init(MQConn, {
// name : "C4MQTestExchange0",
// routingKey : "testKey",
// type : 'direct',
// durable : true,
// autoDelete : false,
// confirm : true,
// publicOption : {
// }
// }, console);
// CurPublihser2 = new C4Publisher();
// Res = await CurPublihser2.init(MQConn, {
// name : "C4MQTestExchange2",
// routingKey : "testKey1",
// type : 'topic',
// durable : true,
// autoDelete : false,
// confirm : true,
// publicOption : {
// }
// }, console)
// if (!Res) {
// process.exit(-1);
// }
// CurSubscriber = new C4Subscriber();
// let Res = await CurSubscriber.init(MQConn, {
// name : "C4MQTestQueue0",
// publisherName : "C4MQTestExchange0",
// durable : true,
// autoDelete : false
// }, console);
// if (!Res) {
// process.exit(-1);
// }
// if (!Res) {
// process.exit(-1);
// }
// CurSubscriber.addMQHandler(["Hello"]);
// CurSubscriber.addSubscribe(defineHandler());
// // CurSubscriber.addSubscribe({
// // //
// // });
// await CurSubscriber.subscribe();
// Begin = (new Date()).getTime();
// Publish();
//
}
Launch();
// 使用C4MQHelper和对象方式声明消息处理方法的实例
async function SampleUseObject() {
/* import C4MQ from './C4MQ';
import C4Exchange from './C4Exchange';
import C4Queue from './C4Queue';
import * as C4MQTypes from './C4MQTypes/C4MQTypes';
import { AMQPClient } from 'amqp';
import { CONNREFUSED } from 'dns';
let MQConn : C4MQ;
let CurExchange : C4Exchange;
let CurQueue : C4Queue;
let DLX : C4Exchange;
let DLQ : C4Queue;
let Count = 0;
let Begin = 0;
let End = 0;
function Publish() {
if (undefined === CurExchange) {
return;
}
// let CurPriority = parseInt((Math.random() * 10).toString());
// console.log("CurMsg : " + Count + ", Priority : " + CurPriority);
CurExchange.publish("testKey", {
msg : Count++
}, {
// priority : CurPriority
expiration : "10000"
});
if (Count > 10) {
End = (new Date()).getTime();
console.log("Used : " + (End - Begin));
process.exit(-1);
}
setTimeout(() => {
Publish();
}, 0);
}
function ProcessMsg() {
if (undefined === CurQueue) {
return;
}
CurQueue.peekMsg((message, headers, deliveryInfo, ack) => {
Count++;
console.log(JSON.stringify(message));
console.log(JSON.stringify(headers));
console.log(JSON.stringify(deliveryInfo, null, 4));
return true;
});
if (Count >= 99999) {
End = (new Date()).getTime();
console.log("Used : " + (End - Begin));
process.exit(-1);
}
setTimeout(() => {
ProcessMsg();
}, 0);
}
async function Launch() {
MQConn = new C4MQ();
try {
await MQConn.init({
host : "host",
port : 5672,
login : "username",
password : "password",
connectionTimeout : 30000,
authMechanism : "AMQPLAIN",
vhost : "/",
noDelay : true,
heartbeat : 5,
clientProperties : {
applicationName : "C4MQ"
}
}, console);
} catch (error) {
console.log(error);
process.exit(-1);
}
CurExchange = new C4Exchange();
DLX = new C4Exchange();
await CurExchange.declared(MQConn, "C4MQTestExchange", {
type : 'direct',
durable : true,
autoDelete : false,
confirm : true
});
await DLX.declared(MQConn, "C4MQTestDLX", {
type : "topic",
durable : true,
autoDelete : false,
confirm : true
});
console.log('xxxx')
CurQueue = new C4Queue();
DLQ = new C4Queue();
await CurQueue.declared(MQConn, "C4MQTestQueue", {
durable : true,
autoDelete : false,
arguments : {
"x-max-priority" : 10,
"x-message-ttl" : 60000,
"x-dead-letter-exchange" : "C4MQTestDLX",
"x-dead-letter-routing-key" : "testKey"
const curHelper = await C4MQHelper.create({
connections: [
{
name: "TestMQConnection",
host: mqHost, // <any>[ "host0", "host1", "host2" ] // 连接Cluster
port: 5672,
login: mqLogin,
password: mqPassword,
connectionTimeout: 30000,
authMechanism: "AMQPLAIN",
vhost: "/",
noDelay: true,
heartbeat: 50,
clientProperties: {
applicationName: "C4MQ"
}
});
await DLQ.declared(MQConn, "C4MQTestDLQ", {
durable : true,
autoDelete : false
});
}
],
publishers: [
{
name: "TestPublisher2",
connection: "TestMQConnection",
routingKey: "testKey.abc",
type: "topic",
durable: true,
autoDelete: false,
confirm: true,
publicOption: {}
}
],
subscribers: [
{
name: "TestSubscriber2",
connection: "TestMQConnection",
publisherName: "TestPublisher2",
durable: true,
autoDelete: false,
handlers: ["TestTopic"],
subscribeLater: false
}
],
handlerLoadPaths: [
'./out/MQHandlers'
]
}, console);
console.log('zzzzz')
await CurQueue.bindExchange("C4MQTestExchange", "testKey");
await CurQueue.bindExchange("C4MQTestExchange", "123");
await DLQ.bindExchange("C4MQTestDLX", "#");
CurQueue.subscribe({
ack : true,
prefetchCount : 16
});
Begin = (new Date()).getTime();
// Publish();
// Publish();
// Publish();
// Publish();
// Publish();
// Publish();
// Publish();
Publish();
// ProcessMsg();
// ProcessMsg();
// ProcessMsg();
// ProcessMsg();
// ProcessMsg();
// ProcessMsg();
// ProcessMsg();
// ProcessMsg();
if (curHelper) {
CurPublihser = curHelper.getPublisher("TestPublisher");
CurPublihser2 = curHelper.getPublisher("TestPublisher2");
Begin1 = (new Date()).getTime();
Publish1();
}
}
Launch(); */
// 解注释执行相应的示例代码
// SampleUseBaseObject();
// SampleUseAnnotaion();
// SampleUseObject();