作者 王勇

完善老式发送消息

... ... @@ -54,25 +54,26 @@ public class RabbitController {
}
@PostMapping("/product/old")
public ResultJson productOld(String xmlStr) throws DocumentException
public ResultJson productOld(String xmlStr)
{
// 1、解析 xml 文件,获取数据
XmlData xmlData = xmlUtils.parsingMessage(xmlStr);
// 2、校验格式、数据
ResultJson resultJson = xmlUtils.checkFormatAndData(xmlData);
if (!"200".equals(resultJson.getCode())) {
return resultJson;
}
// 3、通过格式校验之后,进行配置校验
Boolean binding = userMessageBindingService.validateXmlBinding(xmlData);
if (!binding) {
return ResultJson.error(CustomExceptionType.BINDING_ERROR);
try {
// 1、解析 xml 文件,获取数据
XmlData xmlData = xmlUtils.parsingMessage(xmlStr);
String SNDR = xmlData.getSender();
String RCVR = xmlData.getQueueName();
Date DDTM = xmlData.getSendDateTime() == null ? new Date() : xmlData.getSendDateTime();
String TYPE = xmlData.getExchangeName();
String STYP = xmlData.getRoutingKeyName();
String TOKN = xmlData.getToken();
String SEQN = xmlData.getSequence();
String VSHT = xmlData.getVirtualHostName();
String SERV = xmlData.getServerName();
String content = xmlData.getSendContent();
ResultJson result = productNew(SNDR, RCVR, DDTM, TYPE, STYP, TOKN, SEQN, VSHT, SERV, content);
return result;
} catch (DocumentException e) {
return ResultJson.error(CustomExceptionType.CLIENT_EXCEPTION);
}
// 4、发送消息,并讲消息存放到数据库中
return ResultJson.success("发送成功");
}
@PostMapping("/product/new")
... ... @@ -116,7 +117,7 @@ public class RabbitController {
// 4、mq发送消息,数据库中保存消息并保存至ES
return sendAndSave(sentData);
} catch (IOException | TimeoutException | InterruptedException e) {
return ResultJson.error(CustomExceptionType.SERVER_EXCEPTION);
return ResultJson.error(CustomExceptionType.SERVER_EXCEPTION);
}
}
... ...
... ... @@ -9,6 +9,7 @@ package com.sunyo.wlpt.message.bus.service.exception;
public enum CustomExceptionType {
MESSAGE_SUCCESS("10200", "消息发送成功"),
SERVER_EXCEPTION("10500", "服务器异常,发送消息失败!"),
CLIENT_EXCEPTION("10400", "报文格式错误,请检查报文格式!"),
BINDING_ERROR("10501", "配置信息,未进行绑定!"),
SENDER_ERROR("10401", "报文格式错误,发送者不能为空!"),
... ...
... ... @@ -8,12 +8,15 @@ import io.netty.util.internal.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
... ... @@ -50,20 +53,23 @@ public class XmlUtils {
*/
public XmlData parsingMessage(String xmlStr) throws DocumentException
{
// 设置文件名
String title = "test.xml";
String filePath = dir + "/" + title;
SAXReader reader = new SAXReader();
Document document = reader.read(filePath);
// 将String类型的xml字符串转成xml
Document document = DocumentHelper.parseText(xmlStr);
Element msg = document.getRootElement();
Element meta = msg.element("META");
String body = msg.elementText("BODY");
String ddtm = meta.elementText("DDTM");
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
ParsePosition pos = new ParsePosition(0);
Date sendDateTime = formatter.parse(ddtm, pos);
XmlData xmlData = XmlData.builder()
.sendContent(xmlStr)
.sendContent(msg.elementText("BODY"))
.sender(meta.elementText("SNDR"))
.queueName(meta.elementText("RCVR"))
.sendTime(meta.elementText("DDTM"))
.sendDateTime(sendDateTime)
.exchangeName(meta.elementText("TYPE"))
.routingKeyName(meta.elementText("STYP"))
.sequence(meta.elementText("SEQN"))
... ...