| 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":"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"} |
| 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"} |
| export {}; |
| "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"} |
| export {}; |
| "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")); |
@@ -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"; |
+1
-1
@@ -67,3 +67,3 @@ import { AMQPQueue } from "amqp"; | ||
| /** | ||
| * 去消息并处理 | ||
| * 取消息并处理 | ||
| * @param CB 消息处理方法 | ||
@@ -70,0 +70,0 @@ * 订阅消息时没有设置处理方法,则会进行内部处理,然后使用该方法进行单个消息的处理 |
+1
-1
@@ -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 @@ * 开始订阅 |
+103
-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":";;;;;;;;;;;;;AACA,qDAAmI;AACnI,gEAA8E;AAC9E,wDAAgC;AAChC,qCAAoC;AACpC,gFAAwD;AAQxD,MAAqB,YAAY;IAgB7B;QACI,IAAI,CAAC,OAAO,GAAc,IAAI,CAAC;QAC/B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAgB,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,6BAAiB,CAAC,GAAK,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,6BAAiB,CAAC,CAAC,yBAAa,CAAC,GAAG,EAAE,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAa,IAAI,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAc,EAAE,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACG,IAAI,CAAC,IAAW,EAAE,MAA2B,EAAE,MAAa;;YAC9D,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;gBACf,OAAO,IAAI,CAAC;aACf;YAED,IAAI,MAAM,EAAE;gBACR,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;aAC1B;YAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;gBAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACf,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;wBAC7E,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;oBAClF,OAAO,KAAK,CAAC;iBAChB;qBAAM;oBACH,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;iBACxD;aACJ;YAED,IAAI,MAAM,CAAC,gBAAgB,EAAE;gBACzB,IAAI,CAAC,kBAAkB,GAAI,MAAM,CAAC,gBAAgB,CAAC;aACtD;YACD,IAAI,IAAI,GAAkB,MAAM,CAAC,IAAI,CAAC;YACtC,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,aAAa,CAAC;YAE/C,OAAO,MAAM,CAAC,gBAAgB,CAAC;YAC/B,OAAO,MAAM,CAAC,IAAI,CAAC;YACnB,OAAO,MAAM,CAAC,aAAa,CAAC;YAE5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG;gBAClC,mBAAmB,EAAG,EAAE;aAC3B,CAAC;YAEF,IAAI,QAAQ,GAAE,IAAI,iBAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;YAExB,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAED;;;OAGG;IACH,YAAY,CAAC,MAA0B;QACnC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;YAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;oBACjF,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;gBACtF,OAAO,KAAK,CAAC;aAChB;iBAAM;gBACH,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;aAC5D;SACJ;QAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEK,WAAW;;YACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;gBAClB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;wBAChF,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC;iBACtF;gBACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;aACzD;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvD,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;gBAChD,IAAI,aAAa,GAAG,YAAY,CAAC,aAAa,IAAI,EAAE,CAAC;gBACrD,IAAI,UAAU,GAAG,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC;gBAC/C,IAAI,aAAa,KAAK,EAAE,EAAE;oBACxB,cAAc;oBACd,MAAgB,IAAI,CAAC,OAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;oBACtE,MAAgB,IAAI,CAAC,OAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;iBACvE;qBAAM;oBACL,+BAA+B;oBAC/B,MAAgB,IAAI,CAAC,OAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;oBAChF,MAAgB,IAAI,CAAC,OAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;oBACtE,aAAa,GAAG,6BAAiB,CAAC;iBACnC;gBAED,UAAU,GAAG,UAAU,IAAI,yBAAa,CAAC;gBAEzC,IAAI,mBAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE;oBACrD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,wBAAc,EAA0B,CAAC;iBAE5E;gBACD,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACzD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;oBACrB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;iBACnD;gBACD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACrD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAG;oBACtB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;iBAC9D;gBACD,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE;oBAClC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACxC;aACF;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;KAAA;IAEK,cAAc;;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC;YAClB,MAAgB,IAAI,CAAC,OAAQ,CAAC,OAAO,CAAC,UAAe,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG;;oBACtF,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,CAAC;oBAC9C,MAAM,aAAa,GAAK,YAAY,CAAC,UAAU,CAAC;oBAChD,MAAM,UAAU,GAAQ,OAAO,CAAC,OAAO,CAAC;oBACxC,IAAI,UAAU,EAAE;wBACd,IAAI,GAAG,GAAG,KAAK,CAAC;wBAChB,IAAI;4BACF,IAAI,aAAa,GAAG,IAAI,CAAC;4BACzB,GAAG;gCACD,IAAI,mBAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;oCAAE,MAAM;gCAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gCAC/D,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;oCAAE,MAAM;gCAC7B,IAAI,mBAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,mBAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oCAAE,MAAM;gCAE/F,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;6BACrC,QAAO,KAAK,EAAE;4BAEf,IAAI,IAAI,KAAK,aAAa,EAAE;gCAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE;oCACjB,IAAI,GAAG,GAAG,2DAA2D,eAAe,UAAU,aAAa,UAAU,UAAU,GAAG,CAAC;oCACnI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iCACvE;gCACD,wCAAwC;gCACxC,OAAO,KAAK,CAAC,CAAG,mBAAmB;6BACpC;4BAED,GAAG,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;yBAChE;wBAAC,OAAO,KAAK,EAAE;4BACd,IAAI,IAAI,CAAC,QAAQ,EAAE;gCACjB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oCAC/C,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gCACpD,mBAAmB;gCAEnB,OAAO;gCACP,GAAG,GAAG,KAAK,CAAC;6BACb;iCAAM;gCACL,MAAM,KAAK,CAAC;6BACb;yBACF;wBAED,OAAO,GAAG,CAAC;qBACZ;yBAAM;wBACL,YAAY;wBACZ,OAAO,KAAK,CAAC;qBACd;gBACH,CAAC;aAAA,CAAC,CAAC;YAEH,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC,EAAE,EAAE,CAAC,CAAC;QACT,CAAC;KAAA;IAED;;OAEG;IACG,SAAS,EAAC,sDAAsD;;YAClE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;gBAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACf,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;wBAC9E,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;iBACtF;gBACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;aACzD;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrD,IAAI,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,aAAa,GAAK,EAAE,CAAC;gBACzB,IAAI,UAAU,GAAQ,EAAE,CAAC;gBACzB,IAAI,kBAAkB,CAAC,aAAa;oBAChC,aAAa,GAAK,kBAAkB,CAAC,aAAa,CAAC,CAAK,gBAAgB;gBAC5E,IAAI,kBAAkB,CAAC,UAAU;oBAC7B,UAAU,GAAQ,kBAAkB,CAAC,UAAU,CAAC,CAAQ,iBAAiB;gBAE7E,IAAI,aAAa,KAAK,EAAE,EAAE;oBACtB,cAAc;oBACd,MAAgB,IAAI,CAAC,OAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;oBACtE,MAAgB,IAAI,CAAC,OAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;iBAC/E;qBAAM;oBACH,+BAA+B;oBAC/B,MAAgB,IAAI,CAAC,OAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;oBAChF,MAAgB,IAAI,CAAC,OAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;oBAC5E,aAAa,GAAG,6BAAiB,CAAC;iBACrC;gBAED,IAAI,UAAU,KAAK,EAAE;oBACjB,UAAU,GAAG,yBAAa,CAAC;gBAE/B,WAAW;gBACX,IAAI,mBAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE;oBACjD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;iBAClC;gBACD,IAAI,mBAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;oBAC7D,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;iBAC9C;gBACD,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACzC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;iBAClG;aACJ;YAED,SAAS;YACT,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;KAAA;IAED;;OAEG;IACG,YAAY;;YACd,IAAI,IAAI,GAAG,IAAI,CAAC;YAChB,MAAgB,IAAI,CAAC,OAAQ,CAAC,OAAO,CAAC,UAAgB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG;;oBAErF,kCAAkC;oBAClC,IAAI,eAAe,GAAG,YAAY,CAAC,QAAQ,CAAC;oBAC5C,IAAI,aAAa,GAAK,YAAY,CAAC,UAAU,CAAC;oBAC9C,IAAI,UAAU,GAAQ,OAAO,CAAC,OAAO,CAAC;oBACtC,IAAI,UAAU,EAAE;wBACZ,IAAI,aAAa,GAAG,IAAI,CAAC;wBAEzB,sBAAsB;wBACtB,GAAG;4BACC,IAAI,mBAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gCAAE,MAAM,CAAuB,gBAAgB;4BACpG,IAAI,mBAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,EAAc,eAAe;gCAC/F,IAAI,mBAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,yBAAa,CAAC,CAAC;oCAAE,MAAM,CAAI,iBAAiB;gCACjG,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,yBAAa,CAAC,CAAC,UAAU,CAAC,EAAE,EAAoB,6BAA6B;oCACzG,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,yBAAa,CAAC,CAAC,UAAU,CAAC,CAAC;iCAC1E;gCACD,MAAM,CAAM,8BAA8B;6BAC7C;4BACD,eAAe;4BACf,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,EAAE,EAAY,0BAA0B;gCAC9F,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC;6BAC1E;4BACD,MAAM,CAAM,2BAA2B;yBAC1C,QAAQ,KAAK,EAAE;wBAEhB,IAAI,IAAI,KAAK,aAAa,EAAE;4BACxB,kBAAkB;4BAClB,GAAG;gCACC,IAAI,mBAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,6BAAiB,CAAC,CAAC;oCAAE,MAAM;gCAC/D,IAAI,mBAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,6BAAiB,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE;oCACpE,IAAI,mBAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,6BAAiB,CAAC,CAAC,yBAAa,CAAC,CAAC;wCAAE,MAAM;oCAC9E,IAAI,IAAI,CAAC,KAAK,CAAC,6BAAiB,CAAC,CAAC,yBAAa,CAAC,CAAC,UAAU,CAAC,EAAE;wCAC1D,aAAa,GAAK,IAAI,CAAC,KAAK,CAAC,6BAAiB,CAAC,CAAC,yBAAa,CAAC,CAAC,UAAU,CAAC,CAAC;qCAC9E;oCACD,MAAM;iCACT;gCACD,IAAI,IAAI,CAAC,KAAK,CAAC,6BAAiB,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,EAAE;oCAC1D,aAAa,GAAK,IAAI,CAAC,KAAK,CAAC,6BAAiB,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC;iCAC9E;gCACD,MAAM;6BACT,QAAQ,KAAK,EAAC;yBAClB;wBAED,IAAI,IAAI,KAAK,aAAa,EAAE;4BACxB,IAAI,IAAI,CAAC,QAAQ,EAAE;gCACf,IAAI,GAAG,GAAG,2DAA2D,eAAe,UAAU,aAAa,UAAU,UAAU,GAAG,CAAC;gCACnI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;6BACzE;4BACD,wCAAwC;4BACxC,OAAO,KAAK,CAAC,CAAG,mBAAmB;yBACtC;wBAED,IAAI,GAAG,CAAC;wBACR,IAAI;4BACA,GAAG,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;yBAClE;wBAAC,OAAO,KAAK,EAAE;4BACZ,IAAI,IAAI,CAAC,QAAQ,EAAE;gCACf,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oCAC/C,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gCACpD,OAAO;gCACP,cAAc;gCACd,OAAO;gCACP,GAAG,GAAG,KAAK,CAAC;6BACf;iCAAM;gCACH,MAAM,KAAK,CAAC;6BACf;yBACJ;wBACD,OAAO,GAAG,CAAC;qBACd;yBAAM;wBACH,YAAY;wBACZ,OAAO,KAAK,CAAC;qBAChB;gBACL,CAAC;aAAA,CAAC,CAAC;YACH,UAAU,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,YAAY,EAAE,CAAC;YACxB,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,CAAC;KAAA;IAeK,YAAY,CAAC,GAAyB;;YACxC,MAAM,QAAQ,GAAG,8BAAa,CAAC,GAAG,CAAC,CAAC;YAEpC,IAAI,UAAU,GAAG,iCAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC3C;QACL,CAAC;KAAA;IAED;;OAEG;IACH,MAAM;QACF,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,OAAO;QACH,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;SACjC;QAED,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AAhXD,+BAgXC;AAED;;;GAGG"} |
+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
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"} |
+1
-1
| { | ||
| "name": "c4-mq", | ||
| "version": "0.0.5", | ||
| "version": "0.0.6", | ||
| "description": "C4FrameworkMQ", | ||
@@ -5,0 +5,0 @@ "main": "out", |
+56
-1
@@ -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; |
+1
-1
@@ -205,3 +205,3 @@ import { AMQPClient, AMQPQueue } from "amqp"; | ||
| /** | ||
| * 去消息并处理 | ||
| * 取消息并处理 | ||
| * @param CB 消息处理方法 | ||
@@ -208,0 +208,0 @@ * 订阅消息时没有设置处理方法,则会进行内部处理,然后使用该方法进行单个消息的处理 |
+113
-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(); |
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
262886
23.6%79
33.9%5334
20.54%634
9.5%1
Infinity%