Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
Harvey
/
job-executor
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 5f709334
由
Harvey
编写于
2025-05-16 14:51:34 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
no message
1 个父辈
ae5e8339
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
76 行增加
和
84 行删除
Dockerfile
build/index.js
config/index.js
docker_build.sh
src/index.ts
Dockerfile
0 → 100644
查看文件 @
5f70933
FROM
node:22-alpine
RUN
apk add --no-cache tzdata
&&
\
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
&&
echo
"Asia/Shanghai"
> /etc/timezone
&&
\
apk del tzdata
RUN
mkdir -p /app
WORKDIR
/app
COPY ./package.json /app
COPY ./build /app/build
COPY ./config /app/config
RUN
npm install -g cnpm
RUN
cnpm install --production
CMD
[ "node","build/index.js"]
build/index.js
查看文件 @
5f70933
"use strict"
;
"use strict"
;
Object
.
defineProperty
(
exports
,
"__esModule"
,
{
value
:
true
});
Object
.
defineProperty
(
exports
,
"__esModule"
,
{
value
:
true
});
const
job_executor_1
=
require
(
"job-executor"
);
const
job_executor_1
=
require
(
"job-executor"
);
const
hemera_1
=
require
(
"./hemera"
);
const
config
=
require
(
'../config'
);
const
config
=
require
(
'../config'
);
(
0
,
hemera_1
.
init
)({
nats
:
config
.
nats
,
hemera
:
config
.
hemera
});
var
jobExecutor
=
new
job_executor_1
.
JobExecutor
(
config
);
var
jobExecutor
=
new
job_executor_1
.
JobExecutor
(
config
);
jobExecutor
.
register
(
"demoJobHandler"
,
async
(
args
)
=>
{
jobExecutor
.
register
(
"act"
,
async
(
args
)
=>
{
for
(
let
i
=
1
;
i
<
10
;
i
++
)
{
return
(
0
,
hemera_1
.
act
)(
args
,
true
);
await
new
Promise
((
resolve
,
reject
)
=>
{
setTimeout
(
resolve
,
888
);
});
}
return
{
result
:
'return value'
};
});
});
const
batchJob
=
[
[
"demoJobHandler1"
,
async
(
args
)
=>
{
for
(
let
i
=
1
;
i
<
10
;
i
++
)
{
await
new
Promise
((
resolve
,
reject
)
=>
{
setTimeout
(
resolve
,
888
);
});
}
return
{
result
:
'return value'
};
}
],
[
"demoJobHandler2"
,
async
(
args
)
=>
{
for
(
let
i
=
1
;
i
<
10
;
i
++
)
{
await
new
Promise
((
resolve
,
reject
)
=>
{
setTimeout
(
resolve
,
888
);
});
}
return
{
result
:
'return value'
};
}
]
];
jobExecutor
.
registerBatch
(
batchJob
);
//# sourceMappingURL=index.js.map
//# sourceMappingURL=index.js.map
\ No newline at end of file
\ No newline at end of file
config/index.js
查看文件 @
5f70933
...
@@ -2,17 +2,6 @@ let config;
...
@@ -2,17 +2,6 @@ let config;
try
{
try
{
config
=
JSON
.
parse
(
process
.
env
.
CONFIG
);
config
=
JSON
.
parse
(
process
.
env
.
CONFIG
);
}
catch
(
e
)
{
}
catch
(
e
)
{
// appType: "express",
// appDomain: "http://pd-service-info-task:8088/",
// port: 8088,
// xxlJob: {
// executorKey: "hemera-job",
// scheduleCenterUrl: "http://10.0.4.5:8080/xxl-job-admin",
// accessToken: "default_token",
// jobLogPath: "logs/job",
// enableDebugLog: false,
// },
const
path
=
require
(
"path"
);
const
path
=
require
(
"path"
);
config
=
{
config
=
{
...
@@ -20,13 +9,20 @@ try {
...
@@ -20,13 +9,20 @@ try {
appDomain
:
"http://10.0.1.92:17001/"
,
appDomain
:
"http://10.0.1.92:17001/"
,
port
:
8088
,
port
:
8088
,
xxlJob
:
{
xxlJob
:
{
executorKey
:
"job-
ydn-zq"
,
// 注:开发环境建议加后缀区分
executorKey
:
"job-
executor-hemera"
,
scheduleCenterUrl
:
"http://xxljob.ydniu.com/xxl-job-admin"
,
scheduleCenterUrl
:
"http://xxljob.ydniu.com/xxl-job-admin"
,
accessToken
:
"default_token"
,
accessToken
:
"default_token"
,
jobLogPath
:
"logs/job"
,
jobLogPath
:
"logs/job"
,
enableDebugLog
:
false
,
enableDebugLog
:
false
,
},
},
frpcConfigPath
:
path
.
join
(
process
.
cwd
(),
"frp/frpc.toml"
),
//根目录下文件夹frp中的frpc.toml
frpcConfigPath
:
path
.
join
(
process
.
cwd
(),
"frp/frpc.toml"
),
nats
:
{
servers
:
[
"nats://ruser:T0pS3cr3t@pd-nats:4222"
],
},
hemera
:
{
logLevel
:
"info"
,
},
};
};
}
}
...
...
docker_build.sh
0 → 100755
查看文件 @
5f70933
#!/bin/bash
# 使用说明
# 1. 同目录下新建 pwd.txt 以保存腾讯云容器镜像访问密码,本文件不要提交到 git
# 密码和腾讯云账号ID在 https://console.cloud.tencent.com/tke2/registry/user?rid=1
# 2. 修改以下四行参数
cloudId
=
'3035257033'
#腾讯云账号ID
namespace
=
'ydn.cl'
#腾讯云镜像仓库命名空间
imageName
=
'job-executor-hemera'
#镜像名称
dockerfilePash
=
'./Dockerfile'
#指定当前根目录下构建的Dockerfile文件 例如: ./Dockerfile
# 3. 执行构建推送镜像命令
# sh 文件名称.sh 例如: sh job-executor-hemera.sh 版本号默认为 年月日时分秒
# sh 文件名称.sh 版本号 例如: sh job-executor-hemera.sh v1 版本号例如: 20210902v1
# -----------------------------------------------
version
=
`
date
'+%Y%m%d'
`
#镜像版本号, 默认当前年月日+ 参数
if
[
! -n
"
$1
"
]
;
then
version
=
`
date
'+%Y%m%d%H%M%S'
`
else
version+
=
$1
fi
imageId
=
ccr.ccs.tencentyun.com/
$namespace
/
$imageName
:
$version
echo
"1. 开始拉取最新代码!"
npm config
set
registry https://registry.npm.taobao.org
git pull
echo
"2. 准备构建镜像..."
docker build -f
$dockerfilePash
--platform linux/amd64 -t
$imageId
.
echo
"3. 构建成功!"
echo
"4. 准备登录到云仓库..."
cat pwd.txt | docker login --username
=
$cloudId
--password-stdin ccr.ccs.tencentyun.com
echo
"5. 准备上传镜像到云仓库..."
docker push
$imageId
echo
"6. 上传成功!"
echo
"7. 删除本地原有镜像..."
docker rmi
$imageId
echo
"8. 一切OK..."
exit
;
\ No newline at end of file
\ No newline at end of file
src/index.ts
查看文件 @
5f70933
import
{
JobExecutor
}
from
'job-executor'
import
{
JobExecutor
}
from
'job-executor'
import
{
init
,
act
}
from
'./hemera'
const
config
=
require
(
'../config'
);
const
config
=
require
(
'../config'
);
var
jobExecutor
=
new
JobExecutor
(
config
);
//启动hemera
init
({
nats
:
config
.
nats
,
hemera
:
config
.
hemera
})
jobExecutor
.
register
(
"demoJobHandler"
,
async
(
args
)
=>
{
for
(
let
i
=
1
;
i
<
10
;
i
++
)
{
var
jobExecutor
=
new
JobExecutor
(
config
);
await
new
Promise
((
resolve
,
reject
)
=>
{
setTimeout
(
resolve
,
888
);
})
}
return
{
result
:
'return value'
};
jobExecutor
.
register
(
"act"
,
async
(
args
)
=>
{
// {
// topic: 'account',
// cmd: 'queryUserDetail',
// data: { userid: id }
// }
return
act
(
args
,
true
);
})
})
\ No newline at end of file
\ No newline at end of file
//批量任务注册
const
batchJob
=
[
[
"demoJobHandler1"
,
async
(
args
)
=>
{
for
(
let
i
=
1
;
i
<
10
;
i
++
)
{
await
new
Promise
((
resolve
,
reject
)
=>
{
setTimeout
(
resolve
,
888
);
})
}
return
{
result
:
'return value'
};
}
],
[
"demoJobHandler2"
,
async
(
args
)
=>
{
for
(
let
i
=
1
;
i
<
10
;
i
++
)
{
await
new
Promise
((
resolve
,
reject
)
=>
{
setTimeout
(
resolve
,
888
);
})
}
return
{
result
:
'return value'
};
}
]
]
jobExecutor
.
registerBatch
(
batchJob
);
\ No newline at end of file
\ No newline at end of file
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论