@ckstack/ck-push-sender
Version:
push sender server module
161 lines (160 loc) • 9.47 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
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) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const aws_sdk_1 = __importDefault(require("aws-sdk"));
const bluebird_1 = require("bluebird");
const JSON5 = __importStar(require("json5"));
const dk_lib_1 = require("@dkpkg/dk-lib");
const MyConfig_1 = require("../../../MyConfig");
const MyValues_1 = require("../../../MyValues");
class DelayAwsSqs {
constructor() {
aws_sdk_1.default.config.update({
accessKeyId: MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_ACCESS_KEY,
secretAccessKey: MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_SECRET_ACCESS_KEY,
region: MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_REGION,
httpOptions: {
connectTimeout: MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_CONNECT_TIMEOUT,
timeout: MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_TIMEOUT,
},
});
dk_lib_1.CkLogger.debugLog('aws config update', MyValues_1.PROC_LHD.LHD);
this.AWS_SQS = new aws_sdk_1.default.SQS({ apiVersion: MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_API_VERSION });
dk_lib_1.CkLogger.debugLog('aws sqs object created', MyValues_1.PROC_LHD.LHD);
dk_lib_1.CkLogger.infoLog('create AWS SQS client', MyValues_1.PROC_LHD.LHD);
}
pushOne(lhd, msg) {
return __awaiter(this, void 0, void 0, function* () {
if (this.AWS_SQS_FCM_RECV_CHECK_QUEUE_URL === undefined) {
this.AWS_SQS_FCM_RECV_CHECK_QUEUE_URL = yield this.getSQSQueueUrl(lhd);
}
const queueURL = this.AWS_SQS_FCM_RECV_CHECK_QUEUE_URL;
return new bluebird_1.Promise((resolve, reject) => {
if (!this.AWS_SQS) {
dk_lib_1.CkLogger.errLog2('The aws sqs client was not created normally.', lhd);
reject(new dk_lib_1.CkError(lhd, dk_lib_1.CkValue.ERROR_TYPE.failed_push_to_amazon_sqs_queue, 500));
return;
}
const params = {
MessageBody: msg,
QueueUrl: queueURL,
};
const startTm = Date.now();
dk_lib_1.CkLogger.infoLog2(`<< try push message(one) to aws sqs. queue [${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}]`, lhd);
this.AWS_SQS.sendMessage(params, (err, data) => {
dk_lib_1.CkLogger.printElapsedLog2(lhd, startTm, 'push one to amazon sqs', MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_ELAPSED_MILLI_SEC);
if (err) {
dk_lib_1.CkLogger.errLog2(`>> failed push message(one) to aws sqs. queue [${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}], params [${JSON5.stringify(params)}]`, lhd);
reject(new dk_lib_1.CkError(lhd, dk_lib_1.CkValue.ERROR_TYPE.failed_push_to_amazon_sqs_queue, 500));
return;
}
dk_lib_1.CkLogger.debugLog2(`push one to sqs. params [${JSON5.stringify(params)}], message id [${data.MessageId}]`, lhd);
dk_lib_1.CkLogger.infoLog2(`>> success push message(one) to aws sqs. queue [${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}], message id [${data.MessageId}]`, lhd);
resolve();
});
});
});
}
pushMulti(lhd, msgs) {
return __awaiter(this, void 0, void 0, function* () {
if (this.AWS_SQS_FCM_RECV_CHECK_QUEUE_URL === undefined) {
this.AWS_SQS_FCM_RECV_CHECK_QUEUE_URL = yield this.getSQSQueueUrl(lhd);
}
const queueURL = this.AWS_SQS_FCM_RECV_CHECK_QUEUE_URL;
return new bluebird_1.Promise((resolve, reject) => {
if (!this.AWS_SQS) {
dk_lib_1.CkLogger.errLog2('The aws sqs client was not created normally.', lhd);
reject(new dk_lib_1.CkError(lhd, dk_lib_1.CkValue.ERROR_TYPE.failed_push_to_amazon_sqs_queue, 500));
return;
}
const entries = [];
for (const msg of msgs) {
entries.push({
Id: dk_lib_1.CkUtils.getUUIDV5(`${dk_lib_1.CkUtils.getUUID()}-${Date.now()}`),
MessageBody: msg,
});
}
const params = {
Entries: entries,
QueueUrl: queueURL,
};
const startTm = Date.now();
dk_lib_1.CkLogger.infoLog2('<< try push messages(batch) to aws sqs. queue '
+ `[${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}]`, lhd);
this.AWS_SQS.sendMessageBatch(params, (err, data) => {
dk_lib_1.CkLogger.printElapsedLog2(lhd, startTm, 'push batch to amazon sqs', MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_ELAPSED_MILLI_SEC);
if (err) {
dk_lib_1.CkLogger.errLog2('>> failed push messages(batch) to aws sqs. queue '
+ `[${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}], params [${JSON5.stringify(params)}]`, lhd);
reject(new dk_lib_1.CkError(lhd, dk_lib_1.CkValue.ERROR_TYPE.failed_push_to_amazon_sqs_queue, 500));
return;
}
dk_lib_1.CkLogger.infoLog2('>> success push messages(batch) to aws sqs. queue '
+ `[${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}], count total [${entries.length}], `
+ `success count [${data.Successful.length}], failed count [${data.Failed.length}]`, lhd);
resolve(data.Successful.length);
});
});
});
}
getSQSQueueUrl(lhd) {
return __awaiter(this, void 0, void 0, function* () {
return new bluebird_1.Promise((resolve, reject) => {
if (!this.AWS_SQS) {
dk_lib_1.CkLogger.errLog2('The aws sqs client was not created normally.', lhd);
reject(new dk_lib_1.CkError(lhd, dk_lib_1.CkValue.ERROR_TYPE.failed_push_to_amazon_sqs_queue, 500));
return;
}
const params = { QueueName: MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30 };
const startTm = Date.now();
dk_lib_1.CkLogger.infoLog2(`<< try get aws sqs queue url. queue [${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}]`, lhd);
this.AWS_SQS.getQueueUrl(params, (err, data) => {
dk_lib_1.CkLogger.printElapsedLog2('[aws-sqs]', startTm, 'get sqs queue url', MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_ELAPSED_MILLI_SEC);
if (err) {
dk_lib_1.CkLogger.errLog2(`>> failed get aws sqs queue url. queue [${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}], err [${err.toString()}]`, lhd);
reject(new dk_lib_1.CkError(lhd, dk_lib_1.CkValue.ERROR_TYPE.invalid_amazon_sqs_queue, 500));
return;
}
dk_lib_1.CkLogger.infoLog2(`>> success get aws sqs queue url. queue [${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}], `
+ `url [${data.QueueUrl}]`, lhd);
resolve(data.QueueUrl);
});
});
});
}
}
exports.default = DelayAwsSqs;