Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
X
xxl-job
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
jiyonggang
xxl-job
Commits
a1db96b0
Commit
a1db96b0
authored
Feb 12, 2025
by
jiyonggang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(alarm): 新增飞书文本告警功能
- 实现了飞书文本告警的 JobAlarm 接口 - 添加了飞书告警的配置和发送逻辑 - 集成了飞书 API,支持发送任务告警信息到飞书群
parent
5392baa0
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
95 additions
and
0 deletions
+95
-0
FeiShuTextJobAlarm.java
...com/xxl/job/admin/core/alarm/impl/FeiShuTextJobAlarm.java
+95
-0
No files found.
xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/impl/FeiShuTextJobAlarm.java
0 → 100644
View file @
a1db96b0
package
com
.
xxl
.
job
.
admin
.
core
.
alarm
.
impl
;
import
com.xxl.job.admin.core.alarm.JobAlarm
;
import
com.xxl.job.admin.core.conf.XxlJobAdminConfig
;
import
com.xxl.job.admin.core.model.XxlJobGroup
;
import
com.xxl.job.admin.core.model.XxlJobInfo
;
import
com.xxl.job.admin.core.model.XxlJobLog
;
import
com.xxl.job.admin.core.util.I18nUtil
;
import
com.xxl.job.core.biz.model.ReturnT
;
import
org.slf4j.Logger
;
import
org.springframework.http.HttpEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.stereotype.Component
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpMethod
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.web.client.RestTemplate
;
import
java.util.HashMap
;
import
java.util.Map
;
@Component
public
class
FeiShuTextJobAlarm
implements
JobAlarm
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
FeiShuTextJobAlarm
.
class
);
private
static
final
String
FEISHU_WEBHOOK_URL
=
"https://open.feishu.cn/open-apis/bot/v2/hook/6eb334d1-ec36-46a2-a276-b9b5edb49071"
;
@Override
public
boolean
doAlarm
(
XxlJobInfo
info
,
XxlJobLog
jobLog
)
{
boolean
alarmResult
=
true
;
XxlJobGroup
group
=
XxlJobAdminConfig
.
getAdminConfig
().
getXxlJobGroupDao
().
load
(
info
.
getJobGroup
());
String
title
=
I18nUtil
.
getString
(
"jobconf_monitor"
);
StringBuilder
textBuilder
=
new
StringBuilder
();
textBuilder
.
append
(
title
).
append
(
"\n"
);
textBuilder
.
append
(
"任务组: "
).
append
(
group
!=
null
?
group
.
getTitle
()
:
"null"
).
append
(
"\n"
);
textBuilder
.
append
(
"任务ID: "
).
append
(
info
.
getId
()).
append
(
"\n"
);
textBuilder
.
append
(
"任务描述: "
).
append
(
info
.
getJobDesc
()).
append
(
"\n"
);
textBuilder
.
append
(
"告警详情:\n"
);
textBuilder
.
append
(
" LogId: "
).
append
(
jobLog
.
getId
()).
append
(
"\n"
);
if
(
jobLog
.
getTriggerCode
()
!=
ReturnT
.
SUCCESS_CODE
)
{
textBuilder
.
append
(
" TriggerMsg:\n"
).
append
(
jobLog
.
getTriggerMsg
()).
append
(
"\n"
);
}
if
(
jobLog
.
getHandleCode
()
>
0
&&
jobLog
.
getHandleCode
()
!=
ReturnT
.
SUCCESS_CODE
)
{
textBuilder
.
append
(
" HandleMsg:\n"
).
append
(
jobLog
.
getHandleMsg
()).
append
(
"\n"
);
}
String
text
=
textBuilder
.
toString
();
Map
<
String
,
Object
>
requestBody
=
new
HashMap
<>();
requestBody
.
put
(
"msg_type"
,
"text"
);
Map
<
String
,
String
>
content
=
new
HashMap
<>();
content
.
put
(
"text"
,
text
);
requestBody
.
put
(
"content"
,
content
);
try
{
RestTemplate
restTemplate
=
new
RestTemplate
();
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
add
(
"Content-Type"
,
"application/json"
);
HttpEntity
<
Map
<
String
,
Object
>>
entity
=
new
HttpEntity
<>(
requestBody
,
headers
);
ResponseEntity
<
String
>
response
=
restTemplate
.
exchange
(
FEISHU_WEBHOOK_URL
,
HttpMethod
.
POST
,
entity
,
String
.
class
);
if
(
response
.
getStatusCode
().
is2xxSuccessful
())
{
logger
.
info
(
"Feishu alarm sent successfully. Response: {}"
,
response
.
getBody
());
}
else
{
logger
.
error
(
"Feishu alarm failed. Status code: {}, Response: {}"
,
response
.
getStatusCodeValue
(),
response
.
getBody
());
alarmResult
=
false
;
}
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>> xxl-job, job fail alarm feishu send error, JobLogId:{}"
,
jobLog
.
getId
(),
e
);
alarmResult
=
false
;
}
return
alarmResult
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment