一、背景介绍
公司自成立以来,一直以做项目为主,算是经累经验吧,自去年以来,我们部门准备将以前的项目做成产品,大概细分了几个小的产品,部们下面又分了几个团队,分别负责产品的研发,而我们属于平台团队,负责公用组件、开发平台的研发。
前期各个项目组使用的技术、框架等都不一样,想把技术、框架统一起来比较困难,并且在早期项目研发的时,各自为战,没有形成合力,有些共性的东西,都是各自做自己的,现在转将项目做成产品时,首先就是要将共性的东西,抽取出来,做成组件,通过SOA架构,将组件的服务和能力暴露出来,提高组件的重用性,例如邮件服务,任务一个产品或者系统通过标准的接口,即可发送邮件,不需要重新编写邮件的代码,短信服务、权限服务等
由于几个项目之间有些数据是共有的,例如人员、组织,HR系统已经有人员、组织的功能,在做其它项目时,人员、组织也需要,例如4A平台,这就需要将人员、组织的数据同步,将来的目标,是由ESB同步,由于时间紧,暂时选择了ActiveMQ的方式,HR系统中的人员、组织的数据项很多,而其它系统需要的很少,可能只需要人员和组织的名称及其标识列,并且数据量不大,不会一次性发送上百个人员或者组织的信息,基于这个考虑,通过将人员、组织信息的数据放在消息内放到消息中件上,各个系统通过订阅的方式获取消息中的数据。
二、实现
1、安装ActiveMQ
到ActiveMQ的官方网站下载ActiveMQ,我下载的5.7.0版,解压,例如D盘,打开bin目录,执行acticemq.bat,启动ActiveMQ。
我是基于Spring编写的,新建两个Java工程,将Spring和ActiveMQ的包导入工程中
2、发送接收的前提
为发送和接收方式,把将要发送的信息封装成对象,分别为用户和组织的对象,包括了用户和组织的信息,我们来看看这两个对象
用户对象,BaseModel是一个基类,封装的用ID,创建人,创建时,最后更新人,最后更新时间,这个对象不再单独列出来
public class JmsFaUser extends BaseModel implements java.io.Serializable {
// Fields
/**
*
*/
private static final long serialVersionUID = 1L;
private Long id;
private String userNo;
private String userName;
private String userType;
private String identity;
private String region;
private String userStatus;
private String officeEmail;
private String employeeWorkNo;
private Long orgId;
private String description;
private String attribute1;
private String attribute2;
private String attribute3;
private Long OId;
private String userSex;
private String mobileTel;
private String officeTel;
private String selfEmail;
// Constructors
/** default constructor */
public JmsFaUser() {
}
public String getUserNo() {
return this.userNo;
}
public void setUserNo(String userNo) {
this.userNo = userNo;
}
public String getUserName() {
return this.userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserType() {
return this.userType;
}
public void setUserType(String userType) {
this.userType = userType;
}
public String getIdentity() {
return this.identity;
}
public void setIdentity(String identity) {
this.identity = identity;
}
public String getRegion() {
return this.region;
}
public void setRegion(String region) {
this.region = region;
}
public String getUserStatus() {
return this.userStatus;
}
public void setUserStatus(String userStatus) {
this.userStatus = userStatus;
}
public String getOfficeEmail() {
return this.officeEmail;
}
public void setOfficeEmail(String officeEmail) {
this.officeEmail = officeEmail;
}
public String getEmployeeWorkNo() {
return this.employeeWorkNo;
}
public void setEmployeeWorkNo(String employeeWorkNo) {
this.employeeWorkNo = employeeWorkNo;
}
public String getDescription() {
return this.description;
}
public void setDescription(String description) {
this.description = description;
}
public String getAttribute1() {
return this.attribute1;
}
public void setAttribute1(String attribute1) {
this.attribute1 = attribute1;
}
public String getAttribute2() {
return this.attribute2;
}
public void setAttribute2(String attribute2) {
this.attribute2 = attribute2;
}
public String getAttribute3() {
return this.attribute3;
}
public void setAttribute3(String attribute3) {
this.attribute3 = attribute3;
}
public String getUserSex() {
return this.userSex;
}
public void setUserSex(String userSex) {
this.userSex = userSex;
}
/**
* @return the oId
*/
public Long getOId() {
return OId;
}
/**
* @param oId the oId to set
*/
public void setOId(Long oId) {
OId = oId;
}
public String getSelfEmail() {
return this.selfEmail;
}
public void setSelfEmail(String selfEmail) {
this.selfEmail = selfEmail;
}
/**
* @param orgId the orgId to set
*/
public void setOrgId(Long orgId) {
this.orgId = orgId;
}
/**
* @return the orgId
*/
public Long getOrgId() {
return orgId;
}
/**
* @param officeTel the officeTel to set
*/
public void setOfficeTel(String officeTel) {
this.officeTel = officeTel;
}
/**
* @return the officeTel
*/
public String getOff