作者 朱兆平

解决bean互相调用问题

... ... @@ -29,7 +29,6 @@ public class CustomAnalysisBootApplication {
public static void main(String[] args) {
SpringApplication.run(CustomAnalysisBootApplication.class, args);
// initCompent();
}
@Bean
... ... @@ -39,10 +38,5 @@ public class CustomAnalysisBootApplication {
return builder.setConnectTimeout(Duration.ofSeconds(3)).setReadTimeout(Duration.ofSeconds(3))
.build();
}
public static void initCompent(){
WlptBaseModel wlptBaseModel = (WlptBaseModel) SpringBeanUtitl.getBean("wlptBase");
wlptBaseModel.init();
}
}
... ...
package com.tianbo.analysis.model;
import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Consumer;
import com.tianbo.analysis.service.rabbit.RabbitGetMessage;
import com.tianbo.util.RabitMq.ConnectionUtil;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
@Slf4j
public class RabbitMQ {
public static String status = "not runing";
private String queueName;
private String exchangeName;
private String routingKey;
private String mqIp;
private int mqPort;
private String mqVhost;
private String mqUsername;
private String mqPassword;
public String getQueueName() {
return queueName;
}
public void setQueueName(String queueName) {
this.queueName = queueName;
}
public String getExchangeName() {
return exchangeName;
}
public void setExchangeName(String exchangeName) {
this.exchangeName = exchangeName;
}
public String getRoutingKey() {
return routingKey;
}
public void setRoutingKey(String routingKey) {
this.routingKey = routingKey;
}
public String getMqIp() {
return mqIp;
}
public void setMqIp(String mqIp) {
this.mqIp = mqIp;
}
public int getMqPort() {
return mqPort;
}
public void setMqPort(int mqPort) {
this.mqPort = mqPort;
}
public String getMqVhost() {
return mqVhost;
}
public void setMqVhost(String mqVhost) {
this.mqVhost = mqVhost;
}
public String getMqUsername() {
return mqUsername;
}
public void setMqUsername(String mqUsername) {
this.mqUsername = mqUsername;
}
public String getMqPassword() {
return mqPassword;
}
public void setMqPassword(String mqPassword) {
this.mqPassword = mqPassword;
}
public RabbitMQ(String mqIp, int mqPort, String mqVhost, String mqUsername, String mqPassword,String queueName) {
this.mqIp = mqIp;
this.mqPort = mqPort;
this.mqVhost = mqVhost;
this.mqUsername = mqUsername;
this.mqPassword = mqPassword;
this.queueName = queueName;
}
public void getResponseFromMq() {
try {
// 获取到连接以及mq通道
Connection connection = ConnectionUtil.getConnection(
mqIp,
mqPort,
mqVhost,
mqUsername,
mqPassword);
// 从连接中创建通道
Channel channel = connection.createChannel();
// 声明(创建)队列
// channel.exchangeDeclare(exchangeName, BuiltinExchangeType.TOPIC,true);
// channel.queueDeclare(queueName, true, false, false, null);
channel.queueBind(queueName,exchangeName,routingKey);
channel.basicQos(10);
channel.basicConsume(queueName, false, new RabbitGetMessage(channel));
status = "runing";
}catch (IOException e){
status = "not runing";
e.printStackTrace();
log.error("MQ服务器连接失败,连接不上服务器:{},异常退出",e.toString());
}catch (TimeoutException e){
status = "not runing";
e.printStackTrace();
log.error("MQ服务器连接失败,连接超时:{},异常退出",e.toString());
}
}
}
... ... @@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
... ... @@ -25,27 +26,26 @@ import java.util.List;
*/
@Service
@Slf4j
@Async
public class CoustomAnalysisServiceImp extends NmmsBase implements CoustomAnalysisService {
@Autowired
@Resource
SENDLOGMapper sendlogMapper;
@Autowired
@Resource
ORIGINMANIFESTMASTERMapper originmanifestmasterMapper;
@Autowired
@Resource
OriginmanifestsecondaryMapper originmanifestsecondaryMapper;
public CoustomAnalysisServiceImp(){
//处理多线程时 springboot 无法注入bean的问题
if (this.sendlogMapper==null){
this.sendlogMapper = SpringBeanUtitl.getBean(SENDLOGMapper.class);
}
if (this.originmanifestmasterMapper==null){
this.originmanifestmasterMapper = SpringBeanUtitl.getBean(ORIGINMANIFESTMASTERMapper.class);
}
if (this.originmanifestsecondaryMapper==null){
this.originmanifestsecondaryMapper = SpringBeanUtitl.getBean(OriginmanifestsecondaryMapper.class);
}
// //处理多线程时 springboot 无法注入bean的问题
// if (this.sendlogMapper==null){
// this.sendlogMapper = SpringBeanUtitl.getBean(SENDLOGMapper.class);
// }
// if (this.originmanifestmasterMapper==null){
// this.originmanifestmasterMapper = SpringBeanUtitl.getBean(ORIGINMANIFESTMASTERMapper.class);
// }
// if (this.originmanifestsecondaryMapper==null){
// this.originmanifestsecondaryMapper = SpringBeanUtitl.getBean(OriginmanifestsecondaryMapper.class);
// }
}
@Override
... ...
... ... @@ -50,7 +50,7 @@ public class ShareServiceImp {
CUSTOMSMESSAGEMapper customsmessageMapper;
public ShareServiceImp(){
customsmessageMapper = SpringBeanUtitl.getBean(CUSTOMSMESSAGEMapper.class);
// customsmessageMapper = SpringBeanUtitl.getBean(CUSTOMSMESSAGEMapper.class);
}
public int share(String type, CustomReception customReception){
... ...
package com.tianbo.analysis.task;
import com.tianbo.analysis.model.RabbitMQ;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class MqGetMessageTask {
@Value("${mq.connection.ip}")
private String mqIp;
@Value("${mq.connection.port}")
private int mqPort;
@Value("${mq.connection.vHost}")
private String mqVhost;
@Value("${mq.connection.username}")
private String mqUsername;
@Value("${mq.connection.password}")
private String mqPassword;
@Value("${mq.queue.read-from-mq}")
private String queueName;
@Value("${mq.exchange.name}")
private String exchangeName;
@Value("${mq.exchange.routing-key}")
private String routingKey;
private final static String MQ_RUNING_STATE= "runing";
@Scheduled(fixedRate = 5000)
public void startTask(){
RabbitMQ rabbit = new RabbitMQ(mqIp,mqPort,mqVhost,mqUsername,mqPassword,queueName);
rabbit.setExchangeName(exchangeName);
rabbit.setRoutingKey(routingKey);
if (!MQ_RUNING_STATE.equals(RabbitMQ.status)){
rabbit.getResponseFromMq();
}
log.info("解析程序执行中。。。");
}
}
... ... @@ -38,7 +38,7 @@ public class TaskAnalysis {
*/
private final static int theadamount = 64;
// @Scheduled(fixedRate = 5000)
@Scheduled(fixedRate = 5000)
public void startTask(){
final SimpleDateFormat sdf = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
... ...
... ... @@ -2,10 +2,19 @@ package com.tianbo.analysis.tools;
import org.apache.commons.lang.StringUtils;
import java.util.regex.Pattern;
public class AWBTools {
public static String awbFormat(String awbNo) {
if (!StringUtils.isEmpty(awbNo)) {
//适配邮单解析
String pattern = "\\d{11}";
boolean isMatch = Pattern.matches(pattern, awbNo);
if (!isMatch){
return awbNo;
}
StringBuffer stringBuffer = new StringBuffer(awbNo);
stringBuffer.insert(3, "-");
awbNo = stringBuffer.toString();
... ...