YYC
2023-09-07 7243e0b4bd9a267a633d2e481e17646509b6868d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package com.ld.igds.protocol.zldz.mq;
 
import com.ld.igds.io.request.BaseRequest;
import com.ld.igds.protocol.zldz.analysis.AnalysisService;
import com.ld.igds.protocol.zldz.command.builder.OnLineCommandBuilder;
import com.ld.igds.protocol.zldz.command.message.Message;
import com.ld.igds.protocol.zldz.server.ZldzServerEngine;
import com.ld.igds.protocol.zldz.util.ServerUtils;
import com.ld.io.api.InvokeResult;
import com.ld.io.api.IoSession;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RandomUtils;
import org.springframework.beans.factory.annotation.Autowired;
 
import java.util.concurrent.CountDownLatch;
 
/**
 * 报文接受到后处理
 */
@Slf4j
public class ReceiverServer {
 
    private CountDownLatch latch;
 
    @Autowired
    public ReceiverServer(CountDownLatch latch) {
        this.latch = latch;
    }
 
    @Autowired
    private AnalysisService analysisService;
 
 
 
 
    public void onMessage(String message) {
        message = message.replaceAll("\"", "");
        log.info("-------获取队列信息---" + message);
        try {
            String[] attr = message.split("_");
            String sessionKey = attr[0];
            String msg = attr[1];
            analysisService.analysis2(sessionKey, msg);
        } catch (Exception e) {
            latch.countDown();
            log.error("[正来电子--消息队列数据失败,失败信息:{}]", e.getMessage(),e);
        }
        latch.countDown();
    }
 
 
    public void onLoginMessage(String sessionKey) {
        log.info("-------获取登录队列信息---{}", sessionKey);
        try {
            sessionKey = sessionKey.replaceAll("\"", "");
            String[] attr = sessionKey.split(":");
            IoSession session = ZldzServerEngine.getSession(attr[0],Integer.valueOf(attr[1]));
 
            if (null == session) {
                log.warn("---------------没有获取到会话信息-------------{}", sessionKey);
                latch.countDown();
                return;
            }
 
            long l = RandomUtils.nextInt(1000, 9999);
            Thread.sleep(l);
 
            BaseRequest request = new BaseRequest();
            request.setIp(session.getAddress());
            request.setPort(session.getPort());
            request.setCompanyId(ServerUtils.DEFAULT_COMPANY);
            
            // Step1 生成在线测试命令
            Message message = OnLineCommandBuilder.getInstance().buildMessage(request);
            // 发送命令
            InvokeResult result = session.invoke(message.getByteMsg());
 
            //如果命令发送失败,直接踢掉连接
            if (!InvokeResult.SUCCESS.getCode().equals(result.getCode())) {
                session.destroy();
            }
        } catch (Exception e) {
            latch.countDown();
            log.error("[正来电子--登录消息队列数据失败,失败信息:{}]", e.getMessage());
        }
        latch.countDown();
    }
 
 
}