Commit b9ec8199 by Sxy

feat: 改为 import

parent 815bd182
const Koa = require('koa') import Koa from 'koa';
const app = new Koa() const app = new Koa()
const views = require('koa-views') import views from 'koa-views'
const json = require('koa-json') import json from 'koa-json'
const onerror = require('koa-onerror') import onerror from 'koa-onerror'
const bodyparser = require('koa-bodyparser') import bodyparser from 'koa-bodyparser'
const logger = require('koa-logger') import logger from 'koa-logger'
const parameter = require('koa-parameter') import parameter from 'koa-parameter'
const moment = require("moment") import moment from "moment"
const rabbmitmqUtil = require("./utils/rabbitmq"); import rabbmitmqUtil from "./utils/rabbitmq"
rabbmitmqUtil.initQueue() rabbmitmqUtil.initQueue()
const correlation = require('./middleware/correlation'); import correlation from './middleware/correlation'
const createNameSpace = require('cls-hooked').createNamespace; import { createNamespace } from 'cls-hooked'
const logNameSpace = createNameSpace('logger');
const index = require('./routes/index') const logNameSpace = createNamespace('logger')
const test = require('./routes/test')
import index from './routes/index'
import test from './routes/test'
......
const amqp = require('amqplib'); import amqp from 'amqplib';
const { MQ } = require("../settings") import settings from "../settings"
const logger = require("../utils/logger") const { MQ } = settings
import logger from "../utils/logger"
class RabbitmqClient { class RabbitmqClient {
constructor() { constructor() {
...@@ -31,7 +32,7 @@ class RabbitmqClient { ...@@ -31,7 +32,7 @@ class RabbitmqClient {
} catch (err) { } catch (err) {
logger.info("--- MQ 连接 失败 ------"); logger.info("--- MQ 连接 失败 ------");
logger.info(err); logger.info(err);
throw new Error(err.message); process.exit(1)
} }
} }
...@@ -83,4 +84,4 @@ class RabbitmqClient { ...@@ -83,4 +84,4 @@ class RabbitmqClient {
} }
} }
} }
module.exports = new RabbitmqClient(); export default new RabbitmqClient();
\ No newline at end of file \ No newline at end of file
const { v4: uuidv4 } = require('uuid'); import { v4 as uuidv4 } from 'uuid';
function correlation(namespace) { function correlation(namespace) {
return async (ctx, next) => { return async (ctx, next) => {
...@@ -10,4 +10,4 @@ function correlation(namespace) { ...@@ -10,4 +10,4 @@ function correlation(namespace) {
} }
} }
module.exports = correlation; export default correlation;
\ No newline at end of file \ No newline at end of file
...@@ -3,9 +3,9 @@ ...@@ -3,9 +3,9 @@
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"scripts": { "scripts": {
"start": "node bin/www", "start": "node start",
"dev": "./node_modules/.bin/nodemon bin/www", "dev": "./node_modules/.bin/nodemon start",
"prd": "pm2 start bin/www", "prd": "pm2 start start",
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"dependencies": { "dependencies": {
...@@ -30,6 +30,10 @@ ...@@ -30,6 +30,10 @@
"winston-daily-rotate-file": "^4.5.5" "winston-daily-rotate-file": "^4.5.5"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.14.8",
"@babel/plugin-transform-runtime": "^7.14.5",
"@babel/preset-env": "^7.14.8",
"@babel/register": "^7.14.5",
"nodemon": "^1.19.1" "nodemon": "^1.19.1"
} }
} }
\ No newline at end of file
const router = require('koa-router')() import Router from 'koa-router'
const { sendDelayMessage, sendRetryMessage } = require("../utils/rabbitmq") const router = Router()
const { ok, error } = require("../utils/system") import { sendDelayMessage, sendRetryMessage } from "../utils/rabbitmq"
import { ok, error } from "../utils/system"
router.get('/', async (ctx, next) => { router.get('/', async (ctx, next) => {
await ctx.render('index') await ctx.render('index')
}) })
......
const router = require('koa-router')() import Router from 'koa-router'
const router = Router()
router.get('/test/error', async (ctx, next) => { router.get('/test/error', async (ctx, next) => {
ctx.body = { ctx.body = {
......
module.exports = { export default {
MQ: { MQ: {
protocol: 'amqp', protocol: 'amqp',
hostname: '192.168.18.102', hostname: '192.168.18.102',
......
// Transpile all code following this line with babel and use '@babel/preset-env' (aka ES6) preset.
require("@babel/register")({
presets: ["@babel/preset-env"],
"plugins": [
[
"@babel/plugin-transform-runtime"
]
]
});
// Import the rest of our application.
module.exports = require('./bin/www')
\ No newline at end of file
const axios = require("axios"); import axios from "axios"
const { v4: uuidv4 } = require('uuid'); import { v4 as uuidv4 } from 'uuid'
/** /**
* 请求参数 要求 * 请求参数 要求
* url * url
...@@ -15,7 +15,7 @@ const { v4: uuidv4 } = require('uuid'); ...@@ -15,7 +15,7 @@ const { v4: uuidv4 } = require('uuid');
* data 成功时具体返回值,失败时为 null * data 成功时具体返回值,失败时为 null
* message 成功时返回 null ,失败时返回具体错误消息 * message 成功时返回 null ,失败时返回具体错误消息
*/ */
async function request(message) { export async function request(message) {
try { try {
const { url, method = "POST", headers = {}, params = {}, data = {}, timeout = 5 } = message; const { url, method = "POST", headers = {}, params = {}, data = {}, timeout = 5 } = message;
const response = await axios({ const response = await axios({
...@@ -34,11 +34,6 @@ async function request(message) { ...@@ -34,11 +34,6 @@ async function request(message) {
throw new Error(response.data.message) throw new Error(response.data.message)
} }
} catch (err) { } catch (err) {
console.log(err.message);
throw new Error(err.message); throw new Error(err.message);
} }
} }
\ No newline at end of file
module.exports = {
request
}
\ No newline at end of file
const { createLogger, format, transports } = require('winston'); import { createLogger, format, transports } from 'winston';
const getNamespace = require('cls-hooked').getNamespace; import { getNamespace } from 'cls-hooked';
const myFormat = format.printf(({ level, message, timestamp }) => { const myFormat = format.printf(({ level, message, timestamp }) => {
const loggerNamespace = getNamespace('logger'); const loggerNamespace = getNamespace('logger');
return `[${timestamp}] [${level}] ${loggerNamespace.get('requestId') ? ("[" + loggerNamespace.get('requestId') + "] :") : ''} ${message}`; return `[${timestamp}] [${level}] ${loggerNamespace.get('requestId') ? ("[" + loggerNamespace.get('requestId') + "] :") : ''} ${message}`;
...@@ -22,4 +22,4 @@ const logger = createLogger({ ...@@ -22,4 +22,4 @@ const logger = createLogger({
], ],
}); });
module.exports = logger; export default logger;
\ No newline at end of file \ No newline at end of file
const rabbitmqClient = require("../client/rabbitmq"); import rabbitmqClient from "../client/rabbitmq";
import settings from "../settings"
const { const {
PREFETCH, PREFETCH,
LADDERDELAYOPTIONSL: { LADDERDELAYOPTIONSL: {
...@@ -15,15 +16,14 @@ const { ...@@ -15,15 +16,14 @@ const {
delayQueue, delayQueue,
delayRoutingKey delayRoutingKey
} }
} = require("../settings") } = settings;
import { v4 as uuidv4 } from 'uuid';
const { v4: uuidv4 } = require('uuid'); import { request } from "./axios";
const { request } = require("./axios"); import logger from "../utils/logger"
const logger = require("../utils/logger") import { getNamespace } from 'cls-hooked';
const getNamespace = require('cls-hooked').getNamespace;
/** /**
* 重试机制 * 重试机制
...@@ -101,14 +101,19 @@ async function listenCustomerLadderQueue() { ...@@ -101,14 +101,19 @@ async function listenCustomerLadderQueue() {
* 3. 将消息状态改为 已发送到mq * 3. 将消息状态改为 已发送到mq
*/ */
async function sendRetryMessage(message, queue = consumerQueue) { async function sendRetryMessage(message, queue = consumerQueue) {
const logNameSpace = getNamespace('logger');
message.headers["X-Request-Id"] = logNameSpace.get("requestId");
if (!message.messageId) { if (!message.messageId) {
message.messageId = uuidv4(); message.messageId = uuidv4();
} }
if (!message.retryCount) { if (!message.retryCount) {
message.retryCount = 0; message.retryCount = 0;
} }
if (!message.headers) {
message.headers = {}
}
if (!message.headers["X-Request-Id"]) {
const logNameSpace = getNamespace('logger');
message.headers["X-Request-Id"] = logNameSpace.get("requestId") || uuidv4();
}
const channel = await rabbitmqClient.getConfirmChannel(); const channel = await rabbitmqClient.getConfirmChannel();
await channel.sendToQueue(queue, Buffer.from(JSON.stringify(message)), { await channel.sendToQueue(queue, Buffer.from(JSON.stringify(message)), {
persistent: true, // 持久化 消息 persistent: true, // 持久化 消息
...@@ -179,14 +184,16 @@ async function listenCustomerQueue() { ...@@ -179,14 +184,16 @@ async function listenCustomerQueue() {
* 3. 将消息状态改为 已发送到mq * 3. 将消息状态改为 已发送到mq
*/ */
async function sendDelayMessage(message) { async function sendDelayMessage(message) {
const logNameSpace = getNamespace('logger');
if (!message.messageId) { if (!message.messageId) {
message.messageId = uuidv4(); message.messageId = uuidv4();
} }
if (!message.headers) { if (!message.headers) {
message.headers = {} message.headers = {}
} }
message.headers["X-Request-Id"] = logNameSpace.get("requestId"); if (!message.headers["X-Request-Id"]) {
const logNameSpace = getNamespace('logger');
message.headers["X-Request-Id"] = logNameSpace.get("requestId") || uuidv4();
}
const channel = await rabbitmqClient.getConfirmChannel(); const channel = await rabbitmqClient.getConfirmChannel();
await channel.publish(delayExchange, delayRoutingKey, Buffer.from(JSON.stringify(message)), { await channel.publish(delayExchange, delayRoutingKey, Buffer.from(JSON.stringify(message)), {
persistent: true, // 持久化 消息 persistent: true, // 持久化 消息
......
const getNamespace = require('cls-hooked').getNamespace; import { getNamespace } from 'cls-hooked';
const logNameSpace = getNamespace('logger');
const ok = (data) => { export const ok = (data) => {
const logNameSpace = getNamespace('logger');
return { return {
code: 0, code: 0,
success: true, success: true,
...@@ -11,7 +12,9 @@ const ok = (data) => { ...@@ -11,7 +12,9 @@ const ok = (data) => {
requestId: logNameSpace.get("requestId"), requestId: logNameSpace.get("requestId"),
} }
} }
const error = (msg = "未知错误", code = -1) => { export const error = (msg = "未知错误", code = -1) => {
const logNameSpace = getNamespace('logger');
return { return {
code, code,
success: false, success: false,
...@@ -20,8 +23,3 @@ const error = (msg = "未知错误", code = -1) => { ...@@ -20,8 +23,3 @@ const error = (msg = "未知错误", code = -1) => {
requestId: logNameSpace.get("requestId"), requestId: logNameSpace.get("requestId"),
} }
} }
\ No newline at end of file
module.exports = {
ok,
error
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment