项目结构
添加相关的jar包: pom.xml
4.0.0 com.zgp.alarm AlarmStatusManageNew 1.0-SNAPSHOT war UTF-8 1.7 1.7 4.11 1.6.8 5.0.7.RELEASE 3.1.0 2.3.1 1.2 1.7.12 1.2.17 5.1.6 3.4.5 1.3.1 5.0.3 4.0 1.1.9 2.9.5 2.1.2.RELEASE org.aspectj aspectjweaver ${aspectj.version} org.springframework spring-core ${spring.version} org.springframework spring-beans ${spring.version} org.springframework spring-tx ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-context-support ${spring.version} org.springframework spring-web ${spring.version} org.springframework spring-webmvc ${spring.version} org.springframework spring-aop ${spring.version} org.springframework spring-aspects ${spring.version} org.springframework spring-jdbc ${spring.version} org.springframework spring-jms ${spring.version} org.springframework.data spring-data-redis 2.0.0.RELEASE redis.clients jedis 2.9.0 javax.servlet javax.servlet-api ${servlet.version} provided javax.servlet.jsp javax.servlet.jsp-api ${jsp.version} provided javax.servlet jstl ${jstl.version} log4j log4j ${log4j.version} org.slf4j slf4j-log4j12 ${slf4j.version} org.mybatis mybatis ${mybatis.version} org.mybatis mybatis-spring ${mybatis-spring.version} com.github.pagehelper pagehelper ${pagehelper.version} com.microsoft.sqlserver sqljdbc4 ${sqlserver.version} com.alibaba druid ${druid.version} commons-codec commons-codec 1.11 commons-lang commons-lang 2.6 commons-beanutils commons-beanutils 1.9.3 commons-collections commons-collections 3.2.2 commons-logging commons-logging 1.2 commons-fileupload commons-fileupload 1.3.3 commons-io commons-io 2.6 com.fasterxml.jackson.core jackson-core ${jackson.version} com.fasterxml.jackson.core jackson-databind ${jackson.version} com.fasterxml.jackson.core jackson-annotations ${jackson.version} org.quartz-scheduler quartz 2.3.0 org.apache.httpcomponents httpcore 4.4.10 org.apache.httpcomponents httpclient 4.5.6 org.apache.poi poi 4.1.0 org.apache.poi poi-ooxml 4.1.0 org.apache.poi poi-ooxml-schemas 4.1.0 org.apache.poi poi-scratchpad 4.1.0 org.apache.poi ooxml-schemas 1.4
org.springframework.amqp spring-rabbit ${rabbitmq.version} com.getui.push restful-sdk 1.0.0.0 junit junit ${junit.version} test AlarmStatusManage org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.8 1.8 UTF-8 org.apache.tomcat.maven tomcat7-maven-plugin 2.2 8080 /AlarmStatusManage UTF-8
1、config.properties、log4j.properties
config.properties
#RabbitMQ Settings
# rabbit ip
rabbit.server=192.168.0.103
# rabbit 端口
rabbit.port=5672
# virtual-host 默认为 /
rabbit.vhost=/
# rabbit 用户名
rabbit.username=admin
# rabbit 密码
rabbit.password=admin
# 队列名称
rabbit.fanoutQueue=fanoutQueue
# Exchange名称
rabbit.fanoutExchange=fanoutExchange# jdbc connection
jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url=jdbc:sqlserver://192.168.0.103:1433;DatabaseName=alarm
jdbc.username=sa
jdbc.password=123456
onfig.properties
log4j.rootLogger=INFO,ERROR,Console#Console #输出到控制台
log4j.appender.Console = org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n
log4j.appender.Console.Threshold = DEBUG
log4j.appender.Console.ImmediateFlush = TRUE
log4j.appender.Console.Target = System.out #输出到文件
log4j.appender.logFile = org.apache.log4j.FileAppender
log4j.appender.logFile.layout = org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n
log4j.appender.logFile.Threshold = DEBUG
log4j.appender.logFile.ImmediateFlush = TRUE
log4j.appender.logFile.Append = TRUE
log4j.appender.logFile.File = ${catalina.base}/logs/AlarmStatus_INFO.log
log4j.appender.logFile.Encoding= UTF-8 #按DatePattern输出到文件
log4j.appender.ERROR = org.apache.log4j.DailyRollingFileAppender
log4j.appender.ERROR.layout = org.apache.log4j.PatternLayout
log4j.appender.ERROR.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n
log4j.appender.ERROR.Threshold = ERROR
log4j.appender.ERROR.ImmediateFlush = TRUE
log4j.appender.ERROR.Append = TRUE
log4j.appender.ERROR.File = ${catalina.base}/logs/AlarmStatus_ERROR.log
log4j.appender.ERROR.DatePattern = '_'yyyy-MM-dd'.log'#设定文件大小输出到文件
log4j.appender.INFO = org.apache.log4j.RollingFileAppender
log4j.appender.INFO.layout = org.apache.log4j.PatternLayout
log4j.appender.INFO.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n
log4j.appender.INFO.Threshold = INFO
log4j.appender.INFO.ImmediateFlush = TRUE
log4j.appender.INFO.Append = TRUE
log4j.appender.INFO.File = ${catalina.base}/logs/AlarmStatus_INFO.log
log4j.appender.INFO.MaxFileSize = 20MB
log4j.appender.INFO.MaxBackupIndex = 10
2、RabbitMQ配置文件: spring-rabbitmq-server.xml、spring-rabbitmq-client.xml
spring-rabbitmq-server.xml 服务端
spring-rabbitmq-client.xml 客户端
3、RabbitMQ消息发送端类(消息发布):StatusSchedule.java (主要是(使用)注入 rabbitTemplate 类发送消息、当然也可以注入将rabbitTemplate 类到后台控制器类或工具类中或配置类中等)
package com.zgp.alarm.schedule;import com.fasterxml.jackson.databind.ObjectMapper;
import com.zgp.alarm.bean.*;
import com.zgp.alarm.service.IAlarmStatusService;
import com.zgp.alarm.utils.CommonUtils;
import com.zgp.alarm.utils.RandomUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;import java.util.List;public class StatusSchedule {private static Logger logger = LoggerFactory.getLogger(StatusSchedule.class);private ObjectMapper mapper = new ObjectMapper();private RabbitTemplate rabbitTemplate;@Autowiredprivate IAlarmStatusService alarmStatusService;//处理警情接收确认状态public void processAlarmStauts() {try{logger.info("【处理警情接收确认状态】:开始处理......");List datalist = alarmStatusService.getAlarmStatus(1);if (datalist != null && datalist.size() > 0){AlarmStatus updateModel = datalist.get(0);for(int i = 0;i < datalist.size();i++){AlarmStatus currentModel = datalist.get(i);MsgContentStatusResult msgContentResult = new MsgContentStatusResult();msgContentResult.setUnitName(currentModel.getUnitName());msgContentResult.setMessageType("1");//消息类型 0:送达 1:确认//消息内容AlarmStatusResult alarmStatusResult = new AlarmStatusResult();alarmStatusResult.setMsgid(RandomUtils.getUUID());//消息IDalarmStatusResult.setMsgsendtime(CommonUtils.getCurrentDateTime());//发送消息时间alarmStatusResult.setMsgreceiver("");alarmStatusResult.setMsgsender("ALARM");//消息发送者(系统)alarmStatusResult.setMsgtype("DPHZ");//调派回执信息alarmStatusResult.setMsgcontent(msgContentResult);//消息体
// rabbitTemplate.convertAndSend(alarmStatusResult);rabbitTemplate.convertAndSend(mapper.writeValueAsString(alarmStatusResult));//保存发送记录。AlarmStatusSend statusSend = new AlarmStatusSend(1, updateModel.getId(),updateModel.getJjdid(),updateModel.getConfirmTime(),alarmStatusResult.getMsgid(),alarmStatusResult.getMsgsendtime(),alarmStatusResult.getMsgsender(),alarmStatusResult.getMsgreceiver(),alarmStatusResult.getMsgtype(),mapper.writeValueAsString(msgContentResult));Integer saveFlag = alarmStatusService.saveAlarmStatusSend(statusSend);logger.info("【处理警情接收确认状态】:保存状态发送记录表 saveFlag={} , uploadId={} , msgid={} , msgsendtime = {}", saveFlag , statusSend.getUploadId() , statusSend.getMsgid() ,statusSend.getMsgsendtime());}//更新记录Integer updateFlag = alarmStatusService.updateAlarmStatus(updateModel);logger.info("【处理警情接收确认状态】:更新警情接收确认表 updateFlag={} , 当前记录={}", updateFlag , mapper.writeValueAsString(updateModel));}else{logger.info("【处理警情接收确认状态】:本次没有查询到待发转态记录.....");}logger.info("【处理警情接收确认状态】:结束处理......");}catch (Exception e){e.printStackTrace();logger.error("【处理警情接收确认状态】:出现异常,异常信息为:{}",e.getMessage());}}public RabbitTemplate getRabbitTemplate() {return rabbitTemplate;}public void setRabbitTemplate(RabbitTemplate rabbitTemplate) {this.rabbitTemplate = rabbitTemplate;}
}
4、ActiveMQ消息接收端(监听)类(订阅): RecvHandler.java
package com.zgp.alarm.rabbitMq.client;import com.fasterxml.jackson.databind.ObjectMapper;
import com.zgp.alarm.bean.AlarmStatus;
import com.zgp.alarm.bean.AlarmStatusResult;
import com.zgp.alarm.bean.Response;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;public class RecvHandler implements MessageListener {private static final ObjectMapper mapper = new ObjectMapper();@Overridepublic void onMessage(Message message) {try {// msg就是rabbitmq传来的消息,需要的同学自己打印看一眼// 使用jackson解析\String text = new String(message.getBody());
// String text2 = mapper.readValue(message.getBody() , String.class);System.out.println("接收服务器消息1:" + text);AlarmStatusResult response = mapper.readValue(text , AlarmStatusResult.class);System.out.println("接收服务器消息2:msgid=" + response.getMsgid() + " , message=");
// JsonNode jsonData = MAPPER.readTree(message.getBody());
// System.out.println("我是可爱的小猪,我的id是" + jsonData.get("id").asText() + ",我的名字是" + jsonData.get("name").asText());} catch (Exception e) {e.printStackTrace();}}}
5、spring主配置文件 applicationContext.xml
helperDialect=sqlserver2012reasonable=true
6、定时任务配置文件:applicationContext-job-faultInfo.xml
0 */1 * * * ?
7、mybatis配置文件:mybatis-config.xml