最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PowerJob的UserService工作流程源碼解讀

 更新時間:2024年01月23日 09:07:36   作者:codecraft  
這篇文章主要介紹了PowerJob的UserService工作流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

本文主要研究一下PowerJob的UserService

UserService

tech/powerjob/server/core/service/UserService.java

@Service
public class UserService {
    @Resource
    private UserInfoRepository userInfoRepository;
    /**
     * 保存/修改 用戶
     * @param userInfoDO user
     */
    public void save(UserInfoDO userInfoDO) {
        userInfoDO.setGmtCreate(new Date());
        userInfoDO.setGmtModified(userInfoDO.getGmtCreate());
        userInfoRepository.saveAndFlush(userInfoDO);
    }
    /**
     * 根據用戶ID字符串獲取用戶信息詳細列表
     * @param userIds 逗號分割的用戶ID信息
     * @return 用戶信息詳細列表
     */
    public List<UserInfoDO> fetchNotifyUserList(String userIds) {
        if (StringUtils.isEmpty(userIds)) {
            return Lists.newLinkedList();
        }
        // 去重
        Set<Long> userIdList = Splitter.on(",").splitToList(userIds).stream().map(Long::valueOf).collect(Collectors.toSet());
        List<UserInfoDO> res = userInfoRepository.findByIdIn(Lists.newLinkedList(userIdList));
        res.forEach(x -> x.setPassword(null));
        return res;
    }
}
UserService提供了save及fetchNotifyUserList方法,基于UserInfoRepository來實現(xiàn)

UserInfoDO

tech/powerjob/server/persistence/remote/model/UserInfoDO.java

@Data
@Entity
@Table(indexes = {
        @Index(name = "uidx01_user_info", columnList = "username"),
        @Index(name = "uidx02_user_info", columnList = "email")
})
public class UserInfoDO {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "native")
    @GenericGenerator(name = "native", strategy = "native")
    private Long id;
    private String username;
    private String password;
    /**
     * 手機號
     */
    private String phone;
    /**
     * 郵箱地址
     */
    private String email;
    /**
     * webHook
     */
    private String webHook;
    /**
     * 擴展字段
     */
    private String extra;
    private Date gmtCreate;
    private Date gmtModified;
}
UserInfoDO定義了username、email兩個唯一鍵

UserInfoRepository

tech/powerjob/server/persistence/remote/repository/UserInfoRepository.java

public interface UserInfoRepository extends JpaRepository<UserInfoDO, Long> {
    List<UserInfoDO> findByUsernameLike(String username);
    List<UserInfoDO> findByIdIn(List<Long> userIds);
}
UserInfoRepository基于JpaRepository,聲明了findByUsernameLike、findByIdIn方法

InstanceManager

tech/powerjob/server/core/instance/InstanceManager.java

private void alert(Long instanceId, String alertContent) {
        InstanceInfoDO instanceInfo = instanceInfoRepository.findByInstanceId(instanceId);
        JobInfoDO jobInfo;
        try {
            jobInfo = instanceMetadataService.fetchJobInfoByInstanceId(instanceId);
        } catch (Exception e) {
            log.warn("[InstanceManager-{}] can't find jobInfo, alarm failed.", instanceId);
            return;
        }
        JobInstanceAlarm content = new JobInstanceAlarm();
        BeanUtils.copyProperties(jobInfo, content);
        BeanUtils.copyProperties(instanceInfo, content);
        List&lt;UserInfoDO&gt; userList = SpringUtils.getBean(UserService.class).fetchNotifyUserList(jobInfo.getNotifyUserIds());
        if (!StringUtils.isEmpty(alertContent)) {
            content.setResult(alertContent);
        }
        alarmCenter.alarmFailed(content, AlarmUtils.convertUserInfoList2AlarmTargetList(userList));
    }
InstanceManager的alert會根據jobInfo.getNotifyUserIds()區(qū)查找fetchNotifyUserList出來的userList,最后通過alarmCenter.alarmFailed給指定用戶發(fā)送報警信息

小結

UserService提供了save及fetchNotifyUserList方法,基于UserInfoRepository來實現(xiàn);InstanceManager的alert會根據jobInfo.getNotifyUserIds()區(qū)查找fetchNotifyUserList出來的userList,最后通過alarmCenter.alarmFailed給指定用戶發(fā)送報警信息。

以上就是PowerJob的UserService工作流程源碼解讀的詳細內容,更多關于PowerJob UserService的資料請關注腳本之家其它相關文章!

相關文章

  • SpringMVC通過攔截器實現(xiàn)IP黑名單

    SpringMVC通過攔截器實現(xiàn)IP黑名單

    這篇文章主要為大家詳細介紹了SpringMVC通過攔截器實現(xiàn)IP黑名單,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • SpringBoot中使用異步調度程序的高級方法

    SpringBoot中使用異步調度程序的高級方法

    本文主要介紹了SpringBoot中使用異步調度程序的高級方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • IntelliJ IDEA 安裝教程2019.09.23(最新版)

    IntelliJ IDEA 安裝教程2019.09.23(最新版)

    本文通過圖文并茂的形式給大家介紹了IntelliJ IDEA 安裝教程2019.09.23最新版,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • mybatis之增刪改查

    mybatis之增刪改查

    本篇文章主要介紹了Mybatis實現(xiàn)數(shù)據的增刪改查實例(CRUD),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-07-07
  • SpringCloud協(xié)同開發(fā)實現(xiàn)方法淺析

    SpringCloud協(xié)同開發(fā)實現(xiàn)方法淺析

    好幾個人同時開發(fā)同一個服務上的不同模塊,導致你需要調試的接口總是被路由到別人的服務上,非常影響調試的效率,而且人越多越難受,總是請求不到自己的服務,這篇文章主要介紹了SpringCloud協(xié)同開發(fā)實現(xiàn)方法
    2022-12-12
  • Java數(shù)據結構之隊列與OJ題

    Java數(shù)據結構之隊列與OJ題

    這篇文章主要介紹了Java數(shù)據結構之隊列與OJ題,本文章先是對隊列進行介紹,后又介紹了四道OJ相關的題目,來使其深入理解,需要的朋友可以參考下
    2023-01-01
  • 使用@PropertySource讀取配置文件通過@Value進行參數(shù)注入

    使用@PropertySource讀取配置文件通過@Value進行參數(shù)注入

    這篇文章主要介紹了使用@PropertySource讀取配置文件通過@Value進行參數(shù)注入,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 全網最全SpringBoot集成swagger的詳細教程

    全網最全SpringBoot集成swagger的詳細教程

    swagger是當下比較流行的實時接口文文檔生成工具,swagger分為swagger2?和swagger3兩個常用版本,二者區(qū)別不是很大,主要對于依賴和注解進行了優(yōu)化,swagger2需要引入2個jar包,swagger3只需要一個,用起來沒有什么大的區(qū)別,本文給大家詳細介紹,感興趣的朋友一起看看吧
    2022-08-08
  • 關于spring中單例Bean引用原型Bean產生的問題及解決

    關于spring中單例Bean引用原型Bean產生的問題及解決

    這篇文章主要介紹了關于spring中單例Bean引用原型Bean產生的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • AbstractProcessor擴展MapStruct自動生成實體映射工具類

    AbstractProcessor擴展MapStruct自動生成實體映射工具類

    這篇文章主要為大家介紹了AbstractProcessor擴展MapStruct自動生成實體映射工具類實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01

最新評論

滨州市| 临清市| 土默特左旗| 庆城县| 镇平县| 邯郸县| 海门市| 香格里拉县| 册亨县| 楚雄市| 鹤庆县| 临夏市| 绥棱县| 安平县| 翁牛特旗| 宝丰县| 衡南县| 翁源县| 邯郸县| 宽甸| 雅江县| 会泽县| 福安市| 拜泉县| 柞水县| 普陀区| 新晃| 宁波市| 九龙城区| 天气| 会理县| 乌拉特中旗| 积石山| 黄冈市| 理塘县| 集安市| 衡阳市| 华阴市| 建德市| 电白县| 沾化县|