RabbitMQ的广播模式(fanout)在(基于xml配置)项目中使用
创始人
2024-02-06 09:21:57
0

项目结构

 

添加相关的jar包: pom.xml


4.0.0com.zgp.alarmAlarmStatusManageNew1.0-SNAPSHOTwarUTF-81.71.74.111.6.85.0.7.RELEASE3.1.02.3.11.21.7.121.2.175.1.63.4.51.3.15.0.34.01.1.92.9.52.1.2.RELEASEorg.aspectjaspectjweaver${aspectj.version}org.springframeworkspring-core${spring.version}org.springframeworkspring-beans${spring.version}org.springframeworkspring-tx${spring.version}org.springframeworkspring-context${spring.version}org.springframeworkspring-context-support${spring.version}org.springframeworkspring-web${spring.version}org.springframeworkspring-webmvc${spring.version}org.springframeworkspring-aop${spring.version}org.springframeworkspring-aspects${spring.version}org.springframeworkspring-jdbc${spring.version}org.springframeworkspring-jms${spring.version}org.springframework.dataspring-data-redis2.0.0.RELEASEredis.clientsjedis2.9.0javax.servletjavax.servlet-api${servlet.version}providedjavax.servlet.jspjavax.servlet.jsp-api${jsp.version}providedjavax.servletjstl${jstl.version}log4jlog4j${log4j.version}org.slf4jslf4j-log4j12${slf4j.version}org.mybatismybatis${mybatis.version}org.mybatismybatis-spring${mybatis-spring.version}com.github.pagehelperpagehelper${pagehelper.version}com.microsoft.sqlserversqljdbc4${sqlserver.version}com.alibabadruid${druid.version}commons-codeccommons-codec1.11commons-langcommons-lang2.6commons-beanutilscommons-beanutils1.9.3commons-collectionscommons-collections3.2.2commons-loggingcommons-logging1.2commons-fileuploadcommons-fileupload1.3.3commons-iocommons-io2.6com.fasterxml.jackson.corejackson-core${jackson.version}com.fasterxml.jackson.corejackson-databind${jackson.version}com.fasterxml.jackson.corejackson-annotations${jackson.version}org.quartz-schedulerquartz2.3.0org.apache.httpcomponentshttpcore4.4.10org.apache.httpcomponentshttpclient4.5.6org.apache.poipoi4.1.0org.apache.poipoi-ooxml4.1.0org.apache.poipoi-ooxml-schemas4.1.0org.apache.poipoi-scratchpad4.1.0org.apache.poiooxml-schemas1.4










org.springframework.amqpspring-rabbit${rabbitmq.version}com.getui.pushrestful-sdk1.0.0.0junitjunit${junit.version}testAlarmStatusManageorg.apache.maven.pluginsmaven-compiler-plugin2.3.21.81.8UTF-8org.apache.tomcat.maventomcat7-maven-plugin2.28080/AlarmStatusManageUTF-8

配置文件及java类

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




相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...