引入多数据源及内存数据库
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
package com.gzzn.omms.msgexchangeapi.config;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
|
||||
@Configuration
|
||||
public class DataSourceConfig {
|
||||
@Bean(name = "primaryDataSource")
|
||||
@Primary
|
||||
@ConfigurationProperties(prefix="spring.datasource.primary")
|
||||
public DataSource primaryDataSource()
|
||||
{
|
||||
return DataSourceBuilder.create().build();
|
||||
}
|
||||
|
||||
|
||||
@Bean(name = "secondaryDataSource")
|
||||
@ConfigurationProperties(prefix="spring.datasource.secondary")
|
||||
public DataSource secondaryDataSource()
|
||||
{
|
||||
return DataSourceBuilder.create().build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package com.gzzn.omms.msgexchangeapi.config;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
|
||||
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
||||
import org.springframework.orm.jpa.JpaTransactionManager;
|
||||
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||
|
||||
|
||||
|
||||
@Configuration
|
||||
@EnableTransactionManagement
|
||||
@EnableJpaRepositories(
|
||||
entityManagerFactoryRef="entityManagerFactoryPrimary",
|
||||
transactionManagerRef="transactionManagerPrimary",
|
||||
basePackages= { "com.gzzn.omms.msgexchangeapi.domain.primary.dao" }
|
||||
) //设置Repository所在位置
|
||||
public class PrimaryConfig
|
||||
{
|
||||
|
||||
@Autowired
|
||||
@Qualifier("primaryDataSource")
|
||||
private DataSource primaryDataSource;
|
||||
|
||||
@Primary
|
||||
@Bean(name = "entityManagerPrimary")
|
||||
public EntityManager entityManager(EntityManagerFactoryBuilder builder)
|
||||
{
|
||||
return entityManagerFactoryPrimary(builder).getObject().createEntityManager();
|
||||
}
|
||||
|
||||
@Primary
|
||||
@Bean(name = "entityManagerFactoryPrimary")
|
||||
public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary (EntityManagerFactoryBuilder builder)
|
||||
{
|
||||
return builder
|
||||
.dataSource(primaryDataSource)
|
||||
.properties(getVendorProperties(primaryDataSource))
|
||||
.packages("com.gzzn.omms.msgexchangeapi.domain.primary.entity") //设置实体类所在位置
|
||||
.persistenceUnit("primaryPersistenceUnit")
|
||||
.build();
|
||||
}
|
||||
|
||||
@Autowired private JpaProperties jpaProperties;
|
||||
private Map<String, String> getVendorProperties(DataSource dataSource)
|
||||
{
|
||||
return jpaProperties.getHibernateProperties(dataSource);
|
||||
}
|
||||
|
||||
@Primary
|
||||
@Bean(name = "transactionManagerPrimary")
|
||||
public PlatformTransactionManager transactionManagerPrimary(EntityManagerFactoryBuilder builder)
|
||||
{
|
||||
return new JpaTransactionManager(entityManagerFactoryPrimary(builder).getObject());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.gzzn.omms.msgexchangeapi.config;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
|
||||
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
||||
import org.springframework.orm.jpa.JpaTransactionManager;
|
||||
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||
|
||||
@Configuration
|
||||
@EnableTransactionManagement
|
||||
@EnableJpaRepositories(
|
||||
entityManagerFactoryRef="entityManagerFactorySecondary",
|
||||
transactionManagerRef="transactionManagerSecondary",
|
||||
basePackages= { "com.gzzn.omms.msgexchangeapi.domain.secondary.dao" }
|
||||
) //设置Repository所在位置
|
||||
|
||||
public class SecondaryConfig
|
||||
{
|
||||
@Autowired
|
||||
@Qualifier("secondaryDataSource")
|
||||
private DataSource secondaryDataSource;
|
||||
|
||||
@Bean(name = "entityManagerSecondary")
|
||||
public EntityManager entityManager(EntityManagerFactoryBuilder builder)
|
||||
{
|
||||
return entityManagerFactorySecondary(builder).getObject().createEntityManager();
|
||||
}
|
||||
|
||||
@Bean(name = "entityManagerFactorySecondary")
|
||||
public LocalContainerEntityManagerFactoryBean
|
||||
entityManagerFactorySecondary (EntityManagerFactoryBuilder builder)
|
||||
{
|
||||
return builder
|
||||
.dataSource(secondaryDataSource)
|
||||
.properties(getVendorProperties(secondaryDataSource))
|
||||
.packages("com.gzzn.omms.msgexchangeapi.domain.secondary.entity") //设置实体类所在位置
|
||||
.persistenceUnit("secondaryPersistenceUnit")
|
||||
.build();
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private JpaProperties jpaProperties;
|
||||
private Map<String, String> getVendorProperties(DataSource dataSource)
|
||||
{
|
||||
return jpaProperties.getHibernateProperties(dataSource);
|
||||
}
|
||||
|
||||
@Bean(name = "transactionManagerSecondary")
|
||||
PlatformTransactionManager transactionManagerSecondary(EntityManagerFactoryBuilder builder)
|
||||
{
|
||||
return new JpaTransactionManager(entityManagerFactorySecondary(builder).getObject());
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,7 @@ public class SwaggerConfig {
|
||||
.paths(PathSelectors.any())
|
||||
.build()
|
||||
.apiInfo(apiInfo())
|
||||
.host("130.120.3.231:91/msgexchangeapi")
|
||||
.host("localhost:8080")
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,23 +1,34 @@
|
||||
package com.gzzn.omms.msgexchangeapi.controller;
|
||||
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.gzzn.omms.msgexchangeapi.domain.primary.entity.Cminmsg;
|
||||
import com.gzzn.omms.msgexchangeapi.dto.ResponseDto;
|
||||
import com.gzzn.omms.msgexchangeapi.service.ICminmsgService;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/cminmsgs")
|
||||
public class CminmsgsController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private ICminmsgService cminmsgService;
|
||||
|
||||
|
||||
/***
|
||||
* 发送消息到Cminmsgs数据库表
|
||||
* @param msg
|
||||
* @param topic
|
||||
* @return
|
||||
*/
|
||||
@GetMapping(value = "/send")
|
||||
public ResponseDto send(String msg,String topic) {
|
||||
return ResponseDto.success();
|
||||
@PostMapping(value = "/send")
|
||||
public ResponseDto send(@RequestBody String xmlmsg) {
|
||||
|
||||
Cminmsg minmsg = cminmsgService.sendXmlMsg(xmlmsg);
|
||||
|
||||
return ResponseDto.success(minmsg.getCminmsgsId());
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
package com.gzzn.omms.msgexchangeapi.dao;
|
||||
package com.gzzn.omms.msgexchangeapi.domain.primary.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -6,7 +6,7 @@ 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;
|
||||
import com.gzzn.omms.msgexchangeapi.domain.primary.entity.Cminmsg;
|
||||
|
||||
|
||||
public interface CminmsgDao extends CrudRepository<Cminmsg, Long> {
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
package com.gzzn.omms.msgexchangeapi.dao;
|
||||
package com.gzzn.omms.msgexchangeapi.domain.primary.dao;
|
||||
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
|
||||
import com.gzzn.omms.msgexchangeapi.entiy.Cmoutmsg;
|
||||
import com.gzzn.omms.msgexchangeapi.domain.primary.entity.Cmoutmsg;
|
||||
|
||||
|
||||
public interface CmoutmsgDao extends CrudRepository<Cmoutmsg, Long> {
|
||||
+6
-4
@@ -1,4 +1,4 @@
|
||||
package com.gzzn.omms.msgexchangeapi.entiy;
|
||||
package com.gzzn.omms.msgexchangeapi.domain.primary.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import javax.persistence.*;
|
||||
@@ -11,10 +11,12 @@ import java.util.Date;
|
||||
*/
|
||||
@Entity
|
||||
@Table(name="CMINMSGS")
|
||||
@SequenceGenerator(name = "sequenceGenerator", sequenceName = "SEQ_CMINMSGS")
|
||||
public class Cminmsg implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="sequenceGenerator")
|
||||
@Column(name="CMINMSGS_ID")
|
||||
private long cminmsgsId;
|
||||
|
||||
@@ -22,18 +24,18 @@ public class Cminmsg implements Serializable {
|
||||
@Column(name="CMINMSGS_CLOB_MSG")
|
||||
private String cminmsgsClobMsg;
|
||||
|
||||
@Temporal(TemporalType.DATE)
|
||||
@Temporal(TemporalType.TIMESTAMP)
|
||||
@Column(name="CMINMSGS_DATE_PROCESSED")
|
||||
private Date cminmsgsDateProcessed;
|
||||
|
||||
@Temporal(TemporalType.DATE)
|
||||
@Temporal(TemporalType.TIMESTAMP)
|
||||
@Column(name="CMINMSGS_DATE_RECEIVED")
|
||||
private Date cminmsgsDateReceived;
|
||||
|
||||
@Column(name="CMINMSGS_STATUS")
|
||||
private String cminmsgsStatus;
|
||||
|
||||
@Temporal(TemporalType.DATE)
|
||||
@Temporal(TemporalType.TIMESTAMP)
|
||||
@Column(name="CMINMSGS_SUBSYSTEM_DATE_SENT")
|
||||
private Date cminmsgsSubsystemDateSent;
|
||||
|
||||
+4
-4
@@ -1,4 +1,4 @@
|
||||
package com.gzzn.omms.msgexchangeapi.entiy;
|
||||
package com.gzzn.omms.msgexchangeapi.domain.primary.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import javax.persistence.*;
|
||||
@@ -23,18 +23,18 @@ public class Cmoutmsg implements Serializable {
|
||||
@Column(name="CMINMSGS_CLOB_MSG")
|
||||
private String cminmsgsClobMsg;
|
||||
|
||||
@Temporal(TemporalType.DATE)
|
||||
@Temporal(TemporalType.TIMESTAMP)
|
||||
@Column(name="CMINMSGS_DATE_PROCESSED")
|
||||
private Date cminmsgsDateProcessed;
|
||||
|
||||
@Temporal(TemporalType.DATE)
|
||||
@Temporal(TemporalType.TIMESTAMP)
|
||||
@Column(name="CMINMSGS_DATE_RECEIVED")
|
||||
private Date cminmsgsDateReceived;
|
||||
|
||||
@Column(name="CMINMSGS_STATUS")
|
||||
private String cminmsgsStatus;
|
||||
|
||||
@Temporal(TemporalType.DATE)
|
||||
@Temporal(TemporalType.TIMESTAMP)
|
||||
@Column(name="CMINMSGS_SUBSYSTEM_DATE_SENT")
|
||||
private Date cminmsgsSubsystemDateSent;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.gzzn.omms.msgexchangeapi.entiy.msg;
|
||||
package com.gzzn.omms.msgexchangeapi.domain.primary.entity.msg;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.gzzn.omms.msgexchangeapi.entiy.msg;
|
||||
package com.gzzn.omms.msgexchangeapi.domain.primary.entity.msg;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
+3
-3
@@ -1,12 +1,12 @@
|
||||
package com.gzzn.omms.msgexchangeapi.entiy.msg.rqfd;
|
||||
package com.gzzn.omms.msgexchangeapi.domain.primary.entiy.msg.rqfd;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
||||
import com.gzzn.omms.msgexchangeapi.entiy.msg.Meta;
|
||||
import com.gzzn.omms.msgexchangeapi.entiy.msg.Msg;
|
||||
import com.gzzn.omms.msgexchangeapi.domain.primary.entity.msg.Meta;
|
||||
import com.gzzn.omms.msgexchangeapi.domain.primary.entity.msg.Msg;
|
||||
import com.gzzn.omms.msgexchangeapi.utils.DateTimeUtil;
|
||||
|
||||
@JacksonXmlRootElement(localName="MSG")
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.gzzn.omms.msgexchangeapi.entiy.msg.rqfd;
|
||||
package com.gzzn.omms.msgexchangeapi.domain.primary.entiy.msg.rqfd;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.gzzn.omms.msgexchangeapi.domain.secondary.dao;
|
||||
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
|
||||
import com.gzzn.omms.msgexchangeapi.domain.secondary.entity.Status;
|
||||
|
||||
public interface StatusDao extends CrudRepository<Status, Long> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.gzzn.omms.msgexchangeapi.domain.secondary.entity;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
@Entity
|
||||
@Table(name="status")
|
||||
public class Status {
|
||||
|
||||
@Id
|
||||
private Long id;
|
||||
private String remark;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
public String getRemark() {
|
||||
return remark;
|
||||
}
|
||||
public void setRemark(String remark) {
|
||||
this.remark = remark;
|
||||
}
|
||||
}
|
||||
@@ -8,10 +8,10 @@ import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.CommandLineRunner;
|
||||
|
||||
import com.gzzn.omms.msgexchangeapi.dao.CmoutmsgDao;
|
||||
import com.gzzn.omms.msgexchangeapi.entiy.Cmoutmsg;
|
||||
import com.gzzn.omms.msgexchangeapi.entiy.msg.rqfd.RefdMsg;
|
||||
import com.gzzn.omms.msgexchangeapi.entiy.msg.rqfd.RefdMsgBody;
|
||||
import com.gzzn.omms.msgexchangeapi.domain.primary.dao.CmoutmsgDao;
|
||||
import com.gzzn.omms.msgexchangeapi.domain.primary.entity.Cmoutmsg;
|
||||
import com.gzzn.omms.msgexchangeapi.domain.primary.entiy.msg.rqfd.RefdMsg;
|
||||
import com.gzzn.omms.msgexchangeapi.domain.primary.entiy.msg.rqfd.RefdMsgBody;
|
||||
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
|
||||
import com.gzzn.omms.msgexchangeapi.utils.DateTimeUtil;
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.gzzn.omms.msgexchangeapi.service;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.gzzn.omms.msgexchangeapi.domain.primary.dao.CminmsgDao;
|
||||
import com.gzzn.omms.msgexchangeapi.domain.primary.entity.Cminmsg;
|
||||
|
||||
@Service
|
||||
public class CminmsgServiceImpl implements ICminmsgService {
|
||||
@Autowired
|
||||
private CminmsgDao cminmsgDao;
|
||||
|
||||
|
||||
@Override
|
||||
public Cminmsg sendXmlMsg(String xmlMsg) {
|
||||
Cminmsg cminmsg = new Cminmsg();
|
||||
cminmsg.setCminmsgsClobMsg(xmlMsg);
|
||||
cminmsg.setCminmsgsDateReceived(new Date());
|
||||
|
||||
Cminmsg rt = cminmsgDao.save(cminmsg);
|
||||
return rt;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.gzzn.omms.msgexchangeapi.service;
|
||||
|
||||
import com.gzzn.omms.msgexchangeapi.domain.primary.entity.Cminmsg;
|
||||
|
||||
public interface ICminmsgService {
|
||||
|
||||
/**
|
||||
* 发送xml格式的消息到cminmsgs表
|
||||
* @param xmlMsg
|
||||
*/
|
||||
public Cminmsg sendXmlMsg(String xmlMsg);
|
||||
}
|
||||
@@ -1,18 +1,12 @@
|
||||
package com.gzzn.omms.msgexchangeapi.task;
|
||||
|
||||
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.gzzn.omms.msgexchangeapi.dao.CminmsgDao;
|
||||
import com.gzzn.omms.msgexchangeapi.entiy.Cminmsg;
|
||||
import com.gzzn.omms.msgexchangeapi.exception.ExchangeServiceException;
|
||||
import com.gzzn.omms.msgexchangeapi.service.ICminmsgService;
|
||||
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
|
||||
import com.gzzn.omms.msgexchangeapi.service.IKafkaService;
|
||||
|
||||
@@ -32,39 +26,14 @@ public class ExchangeTask {
|
||||
IExchangeService exchangeService;
|
||||
|
||||
@Autowired
|
||||
private CminmsgDao cminmsgDao;
|
||||
private ICminmsgService cminmsgService;
|
||||
|
||||
@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));
|
||||
for(Cminmsg node:ls)
|
||||
{
|
||||
String strJson = null;
|
||||
try {
|
||||
strJson = exchangeService.xmlToJson(node.getCminmsgsClobMsg());
|
||||
if(!StringUtils.isEmpty(strJson))
|
||||
{
|
||||
kafkaservice.msgSend("topic2", strJson);
|
||||
}
|
||||
} catch (ExchangeServiceException e) {
|
||||
logger.error(e.getMessage());
|
||||
}
|
||||
} // end for
|
||||
|
||||
|
||||
lenSend += ls.size();
|
||||
pageIndex++;
|
||||
}//end while
|
||||
|
||||
//
|
||||
logger.info("同步完成");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user