今天继续聊Java开源项目austin
,Gitee 4.8K stars,GitHub 3.8K stars
只要公司内部有发送消息的需求,都应该要有类似austin
的项目。消息推送平台对各类消息进行统一发送处理,这有利于对功能的收拢,以及提高业务需求开发的效率。
目前README
给出的教程都是基于推送后台的(运营层面),那如果是业务第三方(别的团队技术)是怎么使用的?今天就以实际场景来补下文档。
现在运营给直播团队提了个需求,说要发送主播开播提醒消息以邮件这个渠道给到订阅主播的用户。文案为:xxx用户您关注的主播xxx开播啦!赶紧来看:xxx链接
因为公司内部有消息推送平台,所以承接该需求的直播团队技术就会找到消息推送平台的负责人,说要接入消息推送平台来实现这个需求。
无论是运营还是技术想要发送消息,都需要在消息推送后台创建模板,有了模板才会有全链路追踪,这是使用平台的前提。
于是直播团队的开发就去消息推送后台创建对应的模板:
这时候直播团队的技术又想了,如果我也想把系统的告警也发邮件通知下,是不是也可以?
现在模板创建完,就已经OK了。
目前austin
只提供了HTTP接口,没有RPC接口,要用RPC的需要将austin
改造下,我相信也不难。一个技术团队里,往往也不止一种技术栈,Java/Python/Go这些语言都是比较常见的,而HTTP接口是通用的,很适合作为平台接口给到第三方去调用。
接口解释:相同的文案发给1个或多个用户 接口路径:/send
接口参数样例:
{
"code": "string", // 【必填】 发送消息默认填 send
"messageParam": { // 【必填】
"extra": { // 额外的参数,暂无作用
"key1": "value1"
},
"receiver": "string", // 【必填】 要发送消息的人。如果有多个用,逗号分隔开。最多传100个
"variables": { // 【选填,有占位符才需要该参数】 占位符的key和value
"key1": "value1"
}
},
"messageTemplateId": 0 //【必填】 刚在消息推送后台创建的模板id
}
接口解释:不同的文案发给不同的用户 接口路径:/batchSend
接口参数样例:
{
"code": "string", // 【必填】 发送消息默认填 send
"messageParam":[ // 【必填】
{
"extra": { // 额外的参数,暂无作用
"key1": "value1"
},
"receiver": "string", // 【必填】 要发送消息的人。如果有多个用,逗号分隔开。最多传100个
"variables": { // 【选填,有占位符才需要该参数】 占位符的key和value
"key1": "value1"
}
}
],
"messageTemplateId": 0 //【必填】 刚在消息推送后台创建的模板id
}
刚刚创建出来的两个模板分别为514和515:
当调用515的模板(直播订阅)参数可能会如下:
// 调用的是batch接口,因为是不同的人接受到不同的文案
{
"code": "send",
"messageParam": [
{
"receiver": "123@qq.com",
"variables": {
"anchor": "Java3y",
"user": "小明",
"url": "https://www.baidu.com/"
}
},
{
"receiver": "456@qq.com",
"variables": {
"anchor": "Java3y",
"user": "小红",
"url": "https://www.so.com/"
}
}
],
"messageTemplateId": 515
}
variables的key就对应着模板里的占位符:{user}用户您关注的主播{anchor}开播啦!赶紧来看:{
最后下发的文案就是:小红用户您关注的主播Java3y开播啦!赶紧来看:www.so.com链接
当调用514的模板(直播程序告警)参数可能会如下:
// 调用的是send接口,因为是相同的文案发给1到N个人
{
"code": "send",
"messageParam": {
"receiver": "345@qq.com,445@qq.com,444@qq.com",
"variables": {
"alarm": "2023-05-13 14:16:04.697 [dynamic-tp1] ERROR c.java3y.austin.handler.handler.impl.EmailHandler - EmailHandler#handler fail!cn.hutool.extra.mail.MailException: Invalid Addresses: null \tat cn.hutool.extra.mail.Mail.send(Mail.java:391) \tat cn.hutool.extra.mail.MailUtil.send(MailUtil.java:416) \tat cn.hutool.extra.mail.MailUtil.send(MailUtil.java:194) \tat cn.hutool.extra.mail.MailUtil.send(MailUtil.java:176) \tat com.java3y.austin.handler.handler.impl.EmailHandler.handler(EmailHandler.java:60) \tat com.java3y.austin.handler.handler.BaseHandler.doHandler(BaseHandler.java:61) \tat com.java3y.austin.handler.pending.Task.run(Task.java:66) \tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) \tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) \tat java.lang.Thread.run(Thread.java:748) Caused by: com.sun.mail.smtp.SMTPSendFailedException: 550 The recipient may contain a non-existent account, please check the recipient address. \tat com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388) \tat com.sun.mail.smtp.SMTPTransport.finishData(SMTPTransport.java:1215) \tat com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:586) \tat javax.mail.Transport.send0(Transport.java:169) \tat javax.mail.Transport.send(Transport.java:98) \tat cn.hutool.extra.mail.Mail.doSend(Mail.java:407) \tat cn.hutool.extra.mail.Mail.send(Mail.java:385) \t... 9 more ,params:TaskInfo(messageTemplateId=515, businessId=2000051520230513, receiver=[123@qq.com], idType=50, sendChannel=40, templateType=20, msgType=10, shieldType=10, contentModel=EmailContentModel(title=主播订阅开播提醒, content=小红用户您关注的主播Java3y开播啦!赶紧来看:www.so.com链接, url=null), sendAccount=373) 2023-05-13 14:16:04.698 [dynamic-tp1] INFO com.java3y.austin.support.utils.LogUtils - {\"businessId\":2000051520230513,\"ids\":[\"123@qq.com\"],\"logTimestamp\":1683958564698,\"state\":70}"
}
},
"messageTemplateId": 514
}
variables的key就对应着模板里的占位符:{$alarm}
根据下发用户的维度查询:
根据模板的维度查询:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有