当前播放: 89 | Mail、SMS和Bot服务
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
课程目录
第一章:课程介绍和案例需求 (5讲)
01 | 课程介绍
免费
02 | 背景说明
免费
03 | 课程目标和主要内容
免费
04 | 课程案例需求
免费
05 | 课程补充说明
免费
第二章:系统架构设计和技术栈选型 (8讲)
06 | 为何采用微服务架构?
免费
07 | 架构设计和技术栈选型
免费
08 | 数据和接口模型设计:账户服务
09 | 数据和接口模型设计:业务服务
10 | Dubbo、Spring Cloud和Kubernetes该如何选型(上)
11 | Dubbo、Spring Cloud和Kubernetes该如何选型(中)
12 | Dubbo、Spring Cloud和Kubernetes该如何选型(下)
13 | 技术中台到底讲什么?
第三章:服务开发框架设计和实现 (10讲)
14 | Staffjoy项目结构组织
15 | 谷歌为何采用单体仓库(Mono-Repo)?
16 | 微服务接口参数校验为何重要?
17 | 如何实现统一异常处理?
18 | DTO和DMO为什么要互转?
19 | 如何实现基于Feign的强类型接口?
20 | 为什么框架层就要考虑分环境配置?
21 | 异步处理为何要复制线程上下文信息?
22 | 为你的接口添加Swagger文档
23 | 主流微服务框架概览
第四章:可编程网关设计和实践 (9讲)
24 | 网关和BFF是如何演化出来的(上)
25 | 网关和BFF是如何演化出来的(下)
26 | 网关和反向代理是什么关系?
27 | 网关需要分集群部署吗?
28 | 如何设计一个最简网关?
29 | Faraday网关代码解析(上)
30 | Faraday网关代码解析(下)
31 | 生产级网关需要考虑哪些环节?
32 | 主流开源网关概览
第五章:安全框架设计和实践 (10讲)
33 | 安全认证架构演进:单块阶段(上)
34 | 安全认证架构演进:单块阶段(下)
35 | 安全认证架构演进:微服务阶段
36 | 基于JWT令牌的安全认证架构
37 | JWT的原理是什么?
38 | JWT有哪两种主要流程?
39 | Staffjoy安全认证架构和SSO
40 | 用户认证代码剖析
41 | 服务调用鉴权代码剖析
42 | 如何设计用户角色鉴权?
第六章:服务测试设计和实践 (7讲)
43 | Spring Boot微服务测试该如何分类?
44 | 什么是契约驱动测试?
45 | 什么是测试金字塔?
46 | 单元测试案例分析
47 | 集成测试案例分析
48 | 组件测试案例分析
49 | Mock vs Spy
第七章:可运维架构设计和实践 (8讲)
50 | 何谓生产就绪(Production Ready)?
51 | Spring Boot如何实现分环境配置
52 | Apollo vs SpringCloudConfig vs K8s ConfigMap
53 | CAT vs Zipkin vs Skywalking(上)
54 | CAT vs Zipkin vs Skywalking(下)
55 | 结构化日志和业务审计日志
56 | 集中异常监控和Sentry
57 | EFK & Prometheus & Skywalking + Kubernetes 集成架构
第八章:服务容器化和Docker Compose部署 (10讲)
58 | 本地开发部署架构和软件需求
59 | 手工服务部署和测试(上)
60 | 手工服务部署和测试(中)
61 | 手工服务部署和测试(下)
62 | SkyWalking调用链监控实验
63 | Docker和Docker Compose简介
64 | 容器镜像构建Dockerfile解析
65 | Docker Compose服务部署文件剖析
66 | 将Staffjoy部署到本地Docker Compose环境(上)
67 | 将Staffjoy部署到本地Docker Compose环境(下)
第九章:云原生架构和Kubernetes容器云部署 (17讲)
68 | 到底什么是云原生架构?
69 | Kubernetes背景和架构
70 | Kubernetes有哪些基本概念(上)
71 | Kubernetes有哪些基本概念(下)
72 | 理解Kubernetes节点网络和Pod网络
73 | 深入理解Service和ServiceDiscovery
74 | NodePort vs LoadBalancer vs Ingress
75 | 本地测试Kubernetes部署文件剖析
76 | 本地测试Kubernetes环境搭建
77 | 将Staffjoy部署到本地Kubernetes环境(上)
78 | 将Staffjoy部署到本地Kubernetes环境(下)
79 | 生产环境Kubernetes部署文件剖析
80 | 阿里云Kubernetes环境创建
81 | 将Staffjoy部署到阿里云Kubernetes环境
82 | Kubernetes应用动态配置实验
83 | Kubernetes应用金丝雀发布实验
84 | 阿里云资源释放
第十章:项⽬复盘、应用和扩展环节 (2讲)
85 | 课程复盘
86 | 项目扩展和应用
第十一章:附录 Staffjoy 项目源代码解析 (8讲)
87 | Account服务
88 | Company服务
89 | Mail、SMS和Bot服务
90 | Faraday服务
91 | WhoAmI服务
92 | WWW服务
93 | 前端应用
94 | 结课测试&结束语
89 | Mail、SMS和Bot服务

89 | Mail、SMS和Bot服务

杨波
前携程/拍拍贷技术总监,微服务技术专家
全集6539
新人首单 ¥49.9 原价 ¥199
1
登录 后留言

精选留言(2)

  • grey927
    杨老师,你好,我看到staffjoy里面的短信服务是集成阿里云的短信服务接口,如果想要把staffjoy的短信接口做成可适配多种短信接口(比如接入企业自己的短信中心,或者预留一个接口给企业自定义短信发送实现),这种要如何设计呢?有没有一些参考的东西

    作者回复: 这个可以叫短信聚合服务(一套短信发送接口,可以对接各种短信发送渠道),类似聚合支付(一套支付接口,可以对接各种支付渠道),这个目前还没有看到开源的,一般需要企业自己定制开发,我上家公司就自己开发了一个短信中心。

    开源的我只看到一些库和工具,可以参考再包装成服务
    https://github.com/overtrue/easy-sms
    https://github.com/rememberber/WePush

    另外可以参考聚合支付类项目,这类项目github上不少。

    2019-09-30
    1
  • chun1123
    波波老师,您好,我在本地运行的时候,mail服务的邮件一直不能发出去,我已经在阿里云的CRM中申请了access-key和secret,
    但是发送邮件邮箱没有改,用的还是代码中的FROM = "staffjoy@dm.staffjoy.xyz";
    在页面点击注册时报错如下
    com.aliyuncs.exceptions.ClientException: InvalidUser.NotFound : The specified user does not found.
    RequestId : A28EBEEA-7AFD-4204-9AAC-DABA18BC5FD1
    at com.aliyuncs.DefaultAcsClient.parseAcsResponse(DefaultAcsClient.java:151)
    at com.aliyuncs.DefaultAcsClient.getAcsResponse(DefaultAcsClient.java:96)
    at xyz.staffjoy.mail.service.MailSendService.sendMailAsync(MailSendService.java:67)
    at xyz.staffjoy.mail.service.MailSendService$$FastClassBySpringCGLIB$$94ad016b.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
    at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
    at org.apache.skywalking.apm.plugin.spring.async.SWCallable.call(SWCallable.java:49)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
    我试过把FROM改为自己的阿里云邮箱,也报错:
    The specified mailAddress does not exist.

    请老师帮忙看下,从搭建工程到能运行起来花了两天时间,最后工程跑起来了,但是由于配置问题不能完美运行,自己对阿里云这块也不是很了解,也翻了官方的文档,但是还是没有解决问题,有点小沮丧,希望老师能指点一二

    作者回复: 你好,我尝试了一下发给我163的邮箱,用默认的FROM = "staffjoy@dm.staffjoy.xyz",是可以收到的。

    Staffjoy发邮件用的是阿里云DirectMail服务,可能这个发信地址是和我的阿里云账户绑定的,如果你要改设自己的DirectMail的发信邮箱,有点麻烦,参考:https://help.aliyun.com/document_detail/29426.html?spm=a2c4g.11186623.6.557.54485748dBWkAp

    如果发不了邮件的话,有一个小技巧可以绕过,如果注册邮件发不成功,代码会抛和log一个异常(邮件发送失败都会发异常日志),这个异常里头有激活邮件连接,把这个链接贴到浏览器就可以激活了。

    另外,非生产环境,邮件只能发给指定邮箱后缀的用户,这个在mail-api的MailConstant中可以改代码常量STAFFJOY_EMAIL_SUFFIX,默认发给STAFFJOY_EMAIL_SUFFIX = "@jskillcloud.com

    2019-09-03
    1
收起评论
看过的人还看
微服务架构实战160讲

杨波  拍拍贷研发总监、资深架构师、微服务技术专家

171讲 | 11804 人已学习

新人首单 ¥69.9 原价 ¥299
数据结构与算法之美

王争  前Google工程师

80讲 | 90957 人已学习

新人首单 ¥29.9 原价 ¥129
MySQL实战45讲

林晓斌  网名丁奇,前阿里资深技术专家

49讲 | 59227 人已学习

新人首单 ¥29.9 原价 ¥129
从0开始学架构

李运华  前阿里资深技术专家

60讲 | 46598 人已学习

新人首单 ¥29.9 原价 ¥129