基于RabbitMQ的数据推送队列使用说明

说明

本文档相关对接,须:

  • 依赖 用户服务 user-data-service,1.1.5-RELEASE 及以上版本

  • 依赖 同步服务 jobs-server 下的 rabbitmq-server

  • user-data-service-goa,须开启「推送数据到 jobs-server」

数据

数据格式为字符串

内容为 json 格式,可以转换为 json 对象进行使用

数据模型

  • 字典类型 DictionaryType
{
  "id": String,       // ID
  "code": String,     // 字典类型代码
  "name": String,     // 字典类型名称
  "enable": Boolean,  // 是否启用
  "sort": Long        // 排序
}
  • 字典 Dictionary
{
  "id": String,                             // ID
  "dictionaryType": <ref DictionaryType>,   // 字典类型
  "code": String,                           // 字典代码
  "name": String,                           // 字典名称
  "parentDictionary": <ref Dictionary>,     // 父字典
  "enable": Boolean,                        // 是否启用
  "sort": Long                              // 排序
}
  • 身份类型 IdentityType
{
  "id": String,                               // ID
  "code": String,                             // 身份类型代码
  "name": String,                             // 身份类型名称
  "parentIdentityType": <ref IdentityType>,   // 父身份类型
  "enable": Boolean,                          // 是否启用
  "sort": Long                                // 排序
}
  • 组织机构 Organization
{
  "id": String,                               // ID
  "code": String,                             // 组织机构代码
  "name": String,                             // 组织机构名称
  "description": String,                      // 组织机构描述
  "type": <ref Dictionary>,                   // 组织机构部门类型
  "isRootOrganization": Boolean,              // 是否根组织机构
  "rootOrganizationId": String,               // 所属的根组织机构
  "parentOrganization": <ref Organization>,   // 所属的父级组织机构
  "enable": Boolean,                          // 是否启用
  "sort": Long                                // 排序
}
  • 用户 User
{
  "id": String,                         // ID
  "uid": String,                        // 人员编号
  "passWord": String,                   // 账号密码
  "ldapUserPassword": String,           // 账号密码(LDAP同步用)
  "name": String,                       // 姓名
  "fullNameSpelling": String,           // 姓名全拼
  "nameSpelling": String,               // 姓名简拼
  "certificateType": <ref Dictionary>,  // 证件类型,字典
  "certificateNumber": String,          // 证件号码
  "gender": <ref Dictionary>,           // 性别,字典
  "nation": <ref Dictionary>,           // 民族,字典
  "country": <ref Dictionary>,          // 国家,字典
  "address": <ref Dictionary>,          // 地区,字典
  "phoneNumber": String,                // 手机号码
  "email": String,                      // 邮箱
  "imageUrl": String                    // 个人照片地址
}
  • 帐号 Account
{
  "id": String,                         // ID
  "user": <ref User>,                   // 人员基本信息
  "accountName": String,                // 账号名
  "identityType": <ref IdentityType>,   // 身份,身份类型
  "organization": <ref Organization>,   // 所属组织机构
  "state": <enum>,                      // 账户状态,NORMAL:正常,FREEZE:冻结,WRITTENOFF:注销
  "accountExpiryDate": Date,            // 账户有效日期[yyyy-MM-dd]
  "userUid": String,                    // 人员编号(冗余)
  "userName": String,                   // 姓名(冗余)
  "certificateType": <ref Dictionary>,  // 证件类型(冗余),字典
  "certificateNumber": String,          // 证件号码(冗余)
  "gender": <ref Dictionary>,           // 性别(冗余),字典
  "nation": <ref Dictionary>,           // 民族(冗余),字典
  "country": <ref Dictionary>,          // 国家(冗余),字典
  "address": <ref Dictionary>,          // 地区(冗余),字典
  "phoneNumber": String,                // 手机号码(冗余)
  "email": String                       // 邮箱(冗余)
}
  • 同步密码 SyncPassword
{
  "account": <ref Account>,   // 帐号
  "password": String          // 密码(明文)
}

RabbitMQ 服务地址

host: rabbitmq-server.jobs-server.svc.cluster.local
port: 5672
username: guest
password: guest

注:host 地址视具体部署情况确定,一般使用上述 k8s 集群内地址即可

交换机 Exchange

模式:发布/订阅,fanout

详见:https://www.rabbitmq.com/tutorials/tutorial-three-java.html

业务说明:

  • 用户服务作为数据发布者,会将 组织机构、帐号、密码等数据的变更事件,以消息的方式 发布到 RabbitMQ 中

  • 数据消费方,只须订阅这些消息,将 交换机 与 队列 进行绑定,然后进行监听,接收数据进行处理即可。

交换机清单

  • 组织机构保存

交换机名称,jobs.fanout.exchange.organization-userSvc-2-jobs-save

数据,组织机构 Organization

可依据 code 组织机构代码,作为唯一标识,用于判定数据是否在目标应用存在

  • 组织机构删除

交换机名称,jobs.fanout.exchange.organization-userSvc-2-jobs-delete

数据,组织机构 Organization

  • 帐号保存

交换机名称,jobs.fanout.exchange.account-userSvc-2-jobs-save

数据,帐号 Account

可依据 accountName 帐号名,作为唯一标识,用于判定数据是否在目标应用存在

  • 帐号删除

交换机名称,jobs.fanout.exchange.account-userSvc-2-jobs-delete

数据,帐号 Account

  • 帐号密码修改

交换机名称,jobs.fanout.exchange.account-userSvc-2-jobs-reset-password

数据,帐号 Account

可用于 OpenLDAP 密码的更新

  • 明文密码同步

交换机名称,jobs.fanout.exchange.account-userSvc-2-jobs-sync-password

数据,同步密码 SyncPassword

可将明文密码同步到第三方应用