首次提交代码
This commit is contained in:
+91
@@ -0,0 +1,91 @@
|
||||
logs/*
|
||||
|
||||
# SBT
|
||||
dist/*
|
||||
boot/
|
||||
project/boot/
|
||||
project/plugins/project/
|
||||
lib_managed/
|
||||
src_managed/
|
||||
target/
|
||||
.history
|
||||
.mvn/
|
||||
mvnw
|
||||
mvnw.cmd
|
||||
|
||||
# IntelliJ
|
||||
.idea/
|
||||
*.iml
|
||||
*.ipr
|
||||
*.iws
|
||||
out/
|
||||
|
||||
# Eclipse
|
||||
.cache
|
||||
.classpath
|
||||
.loadpath
|
||||
.metadata
|
||||
.project
|
||||
.scala_dependencies
|
||||
.settings
|
||||
.target/
|
||||
*.launch
|
||||
|
||||
# NetBeans
|
||||
nbproject/
|
||||
nbbuild/
|
||||
dist/
|
||||
nbdist/
|
||||
nbactions.xml
|
||||
nb-configuration.xml
|
||||
|
||||
# TextMate
|
||||
*.tmproj
|
||||
*.tmproject
|
||||
tmtags
|
||||
|
||||
# Sublime Text
|
||||
*.sublime-workspace
|
||||
|
||||
# vim
|
||||
.*.s[a-w][a-z]
|
||||
*.un~
|
||||
Session.vim
|
||||
.netrwhist
|
||||
*~
|
||||
|
||||
# Emacs
|
||||
*~
|
||||
\#*\#
|
||||
/.emacs.desktop
|
||||
/.emacs.desktop.lock
|
||||
.elc
|
||||
auto-save-list
|
||||
tramp
|
||||
.\#*
|
||||
.org-id-locations
|
||||
*_archive
|
||||
|
||||
# Mac OS X
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
Icon
|
||||
._*
|
||||
.Spotlight-V100
|
||||
.Trashes
|
||||
|
||||
# Windows
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
Desktop.ini
|
||||
$RECYCLE.BIN/
|
||||
|
||||
## Gradle ###
|
||||
.gradle
|
||||
build/
|
||||
# Ignore Gradle GUI config
|
||||
gradle-app.setting
|
||||
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
|
||||
!gradle-wrapper.jar
|
||||
/.factorypath
|
||||
Vendored
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip
|
||||
@@ -0,0 +1,78 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.gzzn.omms</groupId>
|
||||
<artifactId>msgexchange-api</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>msgexchange-api</name>
|
||||
<description>msg exchange service</description>
|
||||
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>1.5.17.RELEASE</version>
|
||||
<relativePath/> <!-- lookup parent from repository -->
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.kafka</groupId>
|
||||
<artifactId>spring-kafka</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-jdbc</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.dataformat</groupId>
|
||||
<artifactId>jackson-dataformat-xml</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.oracle</groupId>
|
||||
<artifactId>ojdbc6</artifactId>
|
||||
<version>11.2.0.3</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${project.basedir}/src/main/resources/libs/ojdbc6-11.2.0.3.jar</systemPath>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.gzzn.omms.msgexchangeapi;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
|
||||
@SpringBootApplication
|
||||
@EnableScheduling
|
||||
public class MsgexchangeApiApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(MsgexchangeApiApplication.class, args);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.gzzn.omms.msgexchangeapi.config;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.kafka.clients.producer.ProducerConfig;
|
||||
import org.apache.kafka.common.serialization.StringSerializer;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.kafka.annotation.EnableKafka;
|
||||
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
|
||||
import org.springframework.kafka.core.KafkaTemplate;
|
||||
import org.springframework.kafka.core.ProducerFactory;
|
||||
|
||||
@Configuration
|
||||
@EnableKafka
|
||||
public class KafkaProducerConfig {
|
||||
|
||||
@Value("${kafka.producer.servers}")
|
||||
private String servers;
|
||||
@Value("${kafka.producer.retries}")
|
||||
private int retries;
|
||||
@Value("${kafka.producer.batch.size}")
|
||||
private int batchSize;
|
||||
@Value("${kafka.producer.linger}")
|
||||
private int linger;
|
||||
@Value("${kafka.producer.buffer.memory}")
|
||||
private int bufferMemory;
|
||||
|
||||
|
||||
public Map<String, Object> producerConfigs() {
|
||||
Map<String, Object> props = new HashMap<>();
|
||||
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, servers);
|
||||
props.put(ProducerConfig.RETRIES_CONFIG, retries);
|
||||
props.put(ProducerConfig.BATCH_SIZE_CONFIG, batchSize);
|
||||
props.put(ProducerConfig.LINGER_MS_CONFIG, linger);
|
||||
props.put(ProducerConfig.BUFFER_MEMORY_CONFIG, bufferMemory);
|
||||
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
|
||||
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
|
||||
return props;
|
||||
}
|
||||
|
||||
public ProducerFactory<String, String> producerFactory() {
|
||||
return new DefaultKafkaProducerFactory<>(producerConfigs());
|
||||
}
|
||||
|
||||
@Bean
|
||||
public KafkaTemplate<String, String> kafkaTemplate() {
|
||||
return new KafkaTemplate<String, String>(producerFactory());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.gzzn.omms.msgexchangeapi.controller;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.gzzn.omms.msgexchangeapi.dto.ResponseDto;
|
||||
import com.gzzn.omms.msgexchangeapi.service.IKafkaService;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/kafka")
|
||||
public class KafkaController {
|
||||
@Autowired
|
||||
private IKafkaService kafkaservice;
|
||||
|
||||
@GetMapping(value = "/send")
|
||||
public ResponseDto sendKafka(String msg,String topic) {
|
||||
kafkaservice.msgSend(topic, msg);
|
||||
return ResponseDto.success();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.gzzn.omms.msgexchangeapi.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
|
||||
import com.gzzn.omms.msgexchangeapi.entiy.Cminmsg;
|
||||
|
||||
|
||||
public interface CminmsgDao extends CrudRepository<Cminmsg, Long> {
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Query("select count(*) from Cminmsg c where cminmsgsDateProcessed is not null")
|
||||
public Long getCminmsgsDateProcessedIsNotNullCount();
|
||||
|
||||
|
||||
/**
|
||||
* 根据处理时间字段查询列表,Null情况
|
||||
* @param date
|
||||
* @return
|
||||
*/
|
||||
public List<Cminmsg> findByCminmsgsDateProcessedIsNull(Pageable pageable);
|
||||
|
||||
/**
|
||||
* 非空情况
|
||||
* @return
|
||||
*/
|
||||
public List<Cminmsg> findByCminmsgsDateProcessedIsNotNull(Pageable pageable);
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
package com.gzzn.omms.msgexchangeapi.dto;
|
||||
|
||||
import com.gzzn.omms.msgexchangeapi.enums.ResultCode;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author xiunai
|
||||
*
|
||||
* @date 2018年5月16日
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class ResponseDto<T> {
|
||||
|
||||
private Boolean is_success;
|
||||
|
||||
private Integer err_code;
|
||||
|
||||
private String err_msg;
|
||||
|
||||
private T body;
|
||||
|
||||
public ResponseDto() {}
|
||||
|
||||
public ResponseDto(Integer code, String msg) {
|
||||
this.setIs_success(false);
|
||||
this.setErr_code(code);
|
||||
this.setErr_msg(msg);
|
||||
}
|
||||
|
||||
public static ResponseDto success() {
|
||||
ResponseDto result = new ResponseDto();
|
||||
result.setIs_success(true);
|
||||
result.setResultCode(ResultCode.SUCCESS);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static <T> ResponseDto<T> success(T data) {
|
||||
ResponseDto result = new ResponseDto<T>();
|
||||
result.setIs_success(true);
|
||||
result.setResultCode(ResultCode.SUCCESS);
|
||||
result.setBody(data);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static ResponseDto failure(ResultCode resultCode) {
|
||||
ResponseDto result = new ResponseDto();
|
||||
result.setIs_success(false);
|
||||
result.setResultCode(resultCode);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static <T> ResponseDto<T> failure(ResultCode resultCode, T data) {
|
||||
ResponseDto result = new ResponseDto<T>();
|
||||
result.setIs_success(false);
|
||||
result.setResultCode(resultCode);
|
||||
result.setBody(data);
|
||||
return result;
|
||||
}
|
||||
|
||||
public void setResultCode(ResultCode code) {
|
||||
this.setErr_code(code.code());
|
||||
this.setErr_msg(code.message());
|
||||
}
|
||||
|
||||
public T getBody() {
|
||||
return body;
|
||||
}
|
||||
|
||||
public void setBody(T body) {
|
||||
this.body = body;
|
||||
}
|
||||
|
||||
public Boolean getIs_success() {
|
||||
return is_success;
|
||||
}
|
||||
|
||||
public void setIs_success(Boolean is_success) {
|
||||
this.is_success = is_success;
|
||||
}
|
||||
|
||||
public Integer getErr_code() {
|
||||
return err_code;
|
||||
}
|
||||
|
||||
public void setErr_code(Integer err_code) {
|
||||
this.err_code = err_code;
|
||||
}
|
||||
|
||||
public String getErr_msg() {
|
||||
return err_msg;
|
||||
}
|
||||
|
||||
public void setErr_msg(String err_msg) {
|
||||
this.err_msg = err_msg;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,136 @@
|
||||
package com.gzzn.omms.msgexchangeapi.entiy;
|
||||
|
||||
import java.io.Serializable;
|
||||
import javax.persistence.*;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
* The persistent class for the CMINMSGS database table.
|
||||
*
|
||||
*/
|
||||
@Entity
|
||||
@Table(name="CMINMSGS")
|
||||
@NamedQuery(name="Cminmsg.findAll", query="SELECT c FROM Cminmsg c")
|
||||
public class Cminmsg implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id
|
||||
@Column(name="CMINMSGS_ID")
|
||||
private long cminmsgsId;
|
||||
|
||||
@Lob
|
||||
@Column(name="CMINMSGS_CLOB_MSG")
|
||||
private String cminmsgsClobMsg;
|
||||
|
||||
@Temporal(TemporalType.DATE)
|
||||
@Column(name="CMINMSGS_DATE_PROCESSED")
|
||||
private Date cminmsgsDateProcessed;
|
||||
|
||||
@Temporal(TemporalType.DATE)
|
||||
@Column(name="CMINMSGS_DATE_RECEIVED")
|
||||
private Date cminmsgsDateReceived;
|
||||
|
||||
@Column(name="CMINMSGS_STATUS")
|
||||
private String cminmsgsStatus;
|
||||
|
||||
@Temporal(TemporalType.DATE)
|
||||
@Column(name="CMINMSGS_SUBSYSTEM_DATE_SENT")
|
||||
private Date cminmsgsSubsystemDateSent;
|
||||
|
||||
@Column(name="CMINMSGS_SUBSYSTEM_NAME")
|
||||
private String cminmsgsSubsystemName;
|
||||
|
||||
@Column(name="CMINMSGS_SUBSYSTEM_SEQUENCE")
|
||||
private String cminmsgsSubsystemSequence;
|
||||
|
||||
@Column(name="CMINMSGS_SUBSYSTEM_SUBTYPE")
|
||||
private String cminmsgsSubsystemSubtype;
|
||||
|
||||
@Column(name="CMINMSGS_SUBSYSTEM_TYPE")
|
||||
private String cminmsgsSubsystemType;
|
||||
|
||||
public Cminmsg() {
|
||||
}
|
||||
|
||||
public long getCminmsgsId() {
|
||||
return this.cminmsgsId;
|
||||
}
|
||||
|
||||
public void setCminmsgsId(long cminmsgsId) {
|
||||
this.cminmsgsId = cminmsgsId;
|
||||
}
|
||||
|
||||
public String getCminmsgsClobMsg() {
|
||||
return this.cminmsgsClobMsg;
|
||||
}
|
||||
|
||||
public void setCminmsgsClobMsg(String cminmsgsClobMsg) {
|
||||
this.cminmsgsClobMsg = cminmsgsClobMsg;
|
||||
}
|
||||
|
||||
public Date getCminmsgsDateProcessed() {
|
||||
return this.cminmsgsDateProcessed;
|
||||
}
|
||||
|
||||
public void setCminmsgsDateProcessed(Date cminmsgsDateProcessed) {
|
||||
this.cminmsgsDateProcessed = cminmsgsDateProcessed;
|
||||
}
|
||||
|
||||
public Date getCminmsgsDateReceived() {
|
||||
return this.cminmsgsDateReceived;
|
||||
}
|
||||
|
||||
public void setCminmsgsDateReceived(Date cminmsgsDateReceived) {
|
||||
this.cminmsgsDateReceived = cminmsgsDateReceived;
|
||||
}
|
||||
|
||||
public String getCminmsgsStatus() {
|
||||
return this.cminmsgsStatus;
|
||||
}
|
||||
|
||||
public void setCminmsgsStatus(String cminmsgsStatus) {
|
||||
this.cminmsgsStatus = cminmsgsStatus;
|
||||
}
|
||||
|
||||
public Date getCminmsgsSubsystemDateSent() {
|
||||
return this.cminmsgsSubsystemDateSent;
|
||||
}
|
||||
|
||||
public void setCminmsgsSubsystemDateSent(Date cminmsgsSubsystemDateSent) {
|
||||
this.cminmsgsSubsystemDateSent = cminmsgsSubsystemDateSent;
|
||||
}
|
||||
|
||||
public String getCminmsgsSubsystemName() {
|
||||
return this.cminmsgsSubsystemName;
|
||||
}
|
||||
|
||||
public void setCminmsgsSubsystemName(String cminmsgsSubsystemName) {
|
||||
this.cminmsgsSubsystemName = cminmsgsSubsystemName;
|
||||
}
|
||||
|
||||
public String getCminmsgsSubsystemSequence() {
|
||||
return this.cminmsgsSubsystemSequence;
|
||||
}
|
||||
|
||||
public void setCminmsgsSubsystemSequence(String cminmsgsSubsystemSequence) {
|
||||
this.cminmsgsSubsystemSequence = cminmsgsSubsystemSequence;
|
||||
}
|
||||
|
||||
public String getCminmsgsSubsystemSubtype() {
|
||||
return this.cminmsgsSubsystemSubtype;
|
||||
}
|
||||
|
||||
public void setCminmsgsSubsystemSubtype(String cminmsgsSubsystemSubtype) {
|
||||
this.cminmsgsSubsystemSubtype = cminmsgsSubsystemSubtype;
|
||||
}
|
||||
|
||||
public String getCminmsgsSubsystemType() {
|
||||
return this.cminmsgsSubsystemType;
|
||||
}
|
||||
|
||||
public void setCminmsgsSubsystemType(String cminmsgsSubsystemType) {
|
||||
this.cminmsgsSubsystemType = cminmsgsSubsystemType;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package com.gzzn.omms.msgexchangeapi.enums;
|
||||
|
||||
public enum ResultCode {
|
||||
/* 成功状态码 */
|
||||
SUCCESS(1, "成功"),
|
||||
Failure(0,"失败"),
|
||||
|
||||
/* 参数错误:10001-19999 */
|
||||
PARAM_IS_INVALID(10001, "参数无效"),
|
||||
PARAM_IS_BLANK(10002, "参数为空"),
|
||||
PARAM_TYPE_BIND_ERROR(10003, "参数类型错误"),
|
||||
PARAM_NOT_COMPLETE(10004, "参数缺失"),
|
||||
|
||||
/* 用户错误:20001-29999*/
|
||||
USER_NOT_LOGGED_IN(20001, "用户未登录"),
|
||||
USER_LOGIN_ERROR(20002, "账号不存在或密码错误"),
|
||||
USER_ACCOUNT_FORBIDDEN(20003, "账号已被禁用"),
|
||||
USER_NOT_EXIST(20004, "用户不存在"),
|
||||
USER_HAS_EXISTED(20005, "用户已存在"),
|
||||
|
||||
/* 业务错误:30001-39999 */
|
||||
SPECIFIED_QUESTIONED_USER_NOT_EXIST(30001, "某业务出现问题"),
|
||||
|
||||
/* 系统错误:40001-49999 */
|
||||
SYSTEM_INNER_ERROR(40001, "系统繁忙,请稍后重试"),
|
||||
|
||||
/* 数据错误:50001-599999 */
|
||||
RESULE_DATA_NONE(50001, "数据未找到"),
|
||||
DATA_IS_WRONG(50002, "数据有误"),
|
||||
DATA_ALREADY_EXISTED(50003, "数据已存在"),
|
||||
|
||||
/* 接口错误:60001-69999 */
|
||||
INTERFACE_INNER_INVOKE_ERROR(60001, "内部系统接口调用异常"),
|
||||
INTERFACE_OUTTER_INVOKE_ERROR(60002, "外部系统接口调用异常"),
|
||||
INTERFACE_FORBID_VISIT(60003, "该接口禁止访问"),
|
||||
INTERFACE_ADDRESS_INVALID(60004, "接口地址无效"),
|
||||
INTERFACE_REQUEST_TIMEOUT(60005, "接口请求超时"),
|
||||
INTERFACE_EXCEED_LOAD(60006, "接口负载过高"),
|
||||
INTERFACE_NOT_IMPLEMENT(60007, "接口暂未实现"),
|
||||
|
||||
/* 权限错误:70001-79999 */
|
||||
PERMISSION_NO_ACCESS(70001, "无访问权限");
|
||||
|
||||
|
||||
private Integer code;
|
||||
private String message;
|
||||
|
||||
ResultCode(Integer code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public Integer code() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
public String message() {
|
||||
return this.message;
|
||||
}
|
||||
|
||||
public static String getMessage(String name) {
|
||||
for (ResultCode item : ResultCode.values()) {
|
||||
if (item.name().equals(name)) {
|
||||
return item.message;
|
||||
}
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
public static Integer getCode(String name) {
|
||||
for (ResultCode item : ResultCode.values()) {
|
||||
if (item.name().equals(name)) {
|
||||
return item.code;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.name();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.gzzn.omms.msgexchangeapi.service;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonParseException;
|
||||
import com.fasterxml.jackson.databind.JsonMappingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
|
||||
|
||||
@Service
|
||||
public class ExchangeServiceImpl implements IExchangeService {
|
||||
|
||||
@Override
|
||||
public String xmlToJson(String xml) throws JsonParseException, JsonMappingException, IOException {
|
||||
|
||||
ObjectMapper xmlMapper = new XmlMapper();
|
||||
Map map = xmlMapper.readValue(xml, Map.class);
|
||||
|
||||
ObjectMapper jsonMapper = new ObjectMapper();
|
||||
String json = jsonMapper.writeValueAsString(map);
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.gzzn.omms.msgexchangeapi.service;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonParseException;
|
||||
import com.fasterxml.jackson.databind.JsonMappingException;
|
||||
|
||||
/**
|
||||
* 消息转换服务
|
||||
* @author Administrator
|
||||
*
|
||||
*/
|
||||
public interface IExchangeService {
|
||||
|
||||
public String xmlToJson(String xml)throws JsonParseException, JsonMappingException, IOException;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.gzzn.omms.msgexchangeapi.service;
|
||||
|
||||
public interface IKafkaService {
|
||||
public void msgSend(String topic,String msg) ;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.gzzn.omms.msgexchangeapi.service;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.kafka.core.KafkaTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class KafkaServiceImpl implements IKafkaService{
|
||||
|
||||
@Autowired
|
||||
private KafkaTemplate kafkaTemplate;
|
||||
|
||||
|
||||
@Override
|
||||
public void msgSend(String topic, String msg) {
|
||||
kafkaTemplate.send(topic, msg);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package com.gzzn.omms.msgexchangeapi.task;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonParseException;
|
||||
import com.fasterxml.jackson.databind.JsonMappingException;
|
||||
import com.gzzn.omms.msgexchangeapi.dao.CminmsgDao;
|
||||
import com.gzzn.omms.msgexchangeapi.entiy.Cminmsg;
|
||||
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
|
||||
import com.gzzn.omms.msgexchangeapi.service.IKafkaService;
|
||||
|
||||
/**
|
||||
* 转换任务,获取cim的消息,转换成json,写入到kafka队列中
|
||||
* @author Administrator
|
||||
*
|
||||
*/
|
||||
@Component
|
||||
public class ExchangeTask {
|
||||
private static Logger logger = LoggerFactory.getLogger(ExchangeTask.class);
|
||||
|
||||
@Autowired
|
||||
private IKafkaService kafkaservice;
|
||||
|
||||
@Autowired
|
||||
IExchangeService exchangeService;
|
||||
|
||||
@Autowired
|
||||
private CminmsgDao cminmsgDao;
|
||||
|
||||
@Scheduled(cron="0 0/1 * * * ?")
|
||||
public void corn()
|
||||
{
|
||||
logger.info("定时任务启动....");
|
||||
|
||||
Long maxPerLong = 1000L; //每次最大发送多少条消息
|
||||
Long lenTotal = cminmsgDao.getCminmsgsDateProcessedIsNotNullCount();
|
||||
Long lenSend = 0L;
|
||||
Integer pageIndex = 0;
|
||||
Integer pageSize = 50;
|
||||
while(lenSend < lenTotal && lenSend < maxPerLong)
|
||||
{
|
||||
List<Cminmsg> ls = cminmsgDao.findByCminmsgsDateProcessedIsNotNull(new PageRequest(pageIndex,pageSize));
|
||||
ls.forEach(x -> {
|
||||
String strJson = null;
|
||||
try {
|
||||
strJson = exchangeService.xmlToJson(x.getCminmsgsClobMsg());
|
||||
if(!StringUtils.isEmpty(strJson))
|
||||
{
|
||||
kafkaservice.msgSend("topic2", strJson);
|
||||
}
|
||||
} catch (JsonParseException e) {
|
||||
e.printStackTrace();
|
||||
} catch (JsonMappingException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
lenSend += ls.size();
|
||||
pageIndex++;
|
||||
}
|
||||
//
|
||||
logger.info("同步完成");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
kafka:
|
||||
producer:
|
||||
retries: 0
|
||||
servers: 130.120.3.237:32796,130.120.3.237:32797,130.120.3.237:32798
|
||||
linger: 1
|
||||
batch:
|
||||
size: 4096
|
||||
buffer:
|
||||
memory: 40960
|
||||
max:
|
||||
request:
|
||||
size: 10240000
|
||||
consumer:
|
||||
auto:
|
||||
offset:
|
||||
reset: latest
|
||||
commit:
|
||||
interval: 100
|
||||
servers: 130.120.3.237:32796,130.120.3.237:32797,130.120.3.237:32798
|
||||
zookeeper:
|
||||
connect: 130.120.3.237:2181
|
||||
session:
|
||||
timeout: 6000
|
||||
enable:
|
||||
auto:
|
||||
commit: true
|
||||
topic: test
|
||||
concurrency: 10
|
||||
group:
|
||||
id: test
|
||||
spring:
|
||||
datasource:
|
||||
username: ommsxc
|
||||
password: ommsxc
|
||||
url: jdbc:oracle:thin:@130.120.3.236:1521/xe
|
||||
driver: oracle.jdbc.driver.OracleDriver
|
||||
tomcat:
|
||||
max-active: 30
|
||||
test-on-borrow: true
|
||||
initial-size: 3
|
||||
@@ -0,0 +1,3 @@
|
||||
spring:
|
||||
profiles:
|
||||
active: dev
|
||||
Binary file not shown.
@@ -0,0 +1,16 @@
|
||||
package com.gzzn.omms.msgexchangeapi;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
public class MsgexchangeApiApplicationTests {
|
||||
|
||||
@Test
|
||||
public void contextLoads() {
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.gzzn.omms.msgexchangeapi.service;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonParseException;
|
||||
import com.fasterxml.jackson.databind.JsonMappingException;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
public class ExchangeServiceImplTest {
|
||||
@Autowired
|
||||
private IExchangeService exchangeService;
|
||||
|
||||
|
||||
@Test
|
||||
public void testXmlToJson() throws JsonParseException, JsonMappingException, IOException {
|
||||
String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" +
|
||||
"<MSG xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"unisysaodbsis.xsd\">\r\n" +
|
||||
" <META>\r\n" +
|
||||
" <SNDR>AODB</SNDR>\r\n" +
|
||||
"<SEQN>754508</SEQN>\r\n" +
|
||||
"<DTTM>20181112221954</DTTM>\r\n" +
|
||||
"<TYPE>FLOP</TYPE>\r\n" +
|
||||
"<STYP>PSDT</STYP>\r\n" +
|
||||
"</META>\r\n" +
|
||||
"<FLOP>\r\n" +
|
||||
"<FLID>11450149</FLID>\r\n" +
|
||||
"<FFID>MU-MU5851-A-12NOV182250-D</FFID>\r\n" +
|
||||
"<PSDT PSNO = \"1\">\r\n" +
|
||||
"<PSST>343</PSST>\r\n" +
|
||||
"<STST>12NOV182230</STST>\r\n" +
|
||||
"<STET>12NOV182300</STET>\r\n" +
|
||||
"</PSDT>\r\n" +
|
||||
"</FLOP>\r\n" +
|
||||
"</MSG>";
|
||||
String jsonString = exchangeService.xmlToJson(xmlString);
|
||||
System.out.println(jsonString);
|
||||
|
||||
//assertThat(jsonPath("$.", matcher)).
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user