Bladeren bron

增加订购topic和发送消息的restful接口

weihf 7 jaren geleden
bovenliggende
commit
fe9f1c26a5

+ 48 - 0
ipu-ddmp-data/src/main/java/com/ai/ipu/ddmp/data/action/ConsumerAction.java

@ -0,0 +1,48 @@
1
package com.ai.ipu.ddmp.data.action;
2

3
import javax.servlet.http.HttpServletRequest;
4

5

6
import org.springframework.web.bind.annotation.RequestMapping;
7
import org.springframework.web.bind.annotation.RestController;
8

9
import com.ai.aif.msgframe.consumer.MfConsumerClient;
10
import com.ai.ipu.basic.string.StringUtil;
11
import com.ai.ipu.ddmp.data.config.DataConfig;
12
import com.ai.ipu.ddmp.data.util.AppConstant;
13
import com.ai.ipu.ddmp.data.util.ReturnCode;
14
import com.ai.ipu.ddmp.data.util.SpringUtil;
15
import com.alibaba.fastjson.JSONObject;
16

17
@RestController
18
@RequestMapping("/rest/Consumer")
19
public class ConsumerAction {
20

21
	/*
22
	 * 必须先订购,再发送消息,否则消息无法被接收到
23
	 */
24
	@RequestMapping(value = "/Subscribe")
25
    public String subscribeTopic(HttpServletRequest req) {
26
		//获取参数
27
        String topic = req.getParameter("topic"), tag = req.getParameter("tag");
28
		// 返回处理结果
29
        JSONObject obj = new JSONObject();
30
        obj.put(AppConstant.result.RETURN_CODE, ReturnCode.SUCCESS.getCode());
31
        obj.put(AppConstant.result.RETURN_MSG, ReturnCode.SUCCESS.getDescription());
32
        if (!StringUtil.isEmpty(topic) 
33
        		&&(((DataConfig) SpringUtil.getBean("dataConfig")).getOrigTopics().indexOf(topic)>=0))
34
        	if (StringUtil.isEmpty(tag))
35
        		MfConsumerClient.subscribe(topic, "*","com.ai.ipu.ddmp.data.consumer.ConsumerProcessorImpl");
36
        	else
37
        		MfConsumerClient.subscribe(topic, tag,"com.ai.ipu.ddmp.data.consumer.ConsumerProcessorImpl");
38
        else
39
        {
40
        	obj.put(AppConstant.result.RETURN_CODE, ReturnCode.PARAM_ERROR.getCode());
41
        	if (StringUtil.isEmpty(topic)) 
42
        		obj.put(AppConstant.result.RETURN_MSG, ReturnCode.PARAM_ERROR.getDescription()+",订购失败!topic为空");
43
        	else
44
        		obj.put(AppConstant.result.RETURN_MSG, ReturnCode.PARAM_ERROR.getDescription()+",订购失败!topic"+topic+"不在订购列表中");
45
        }
46
        return obj.toString();
47
	}
48
}

+ 68 - 0
ipu-ddmp-data/src/main/java/com/ai/ipu/ddmp/data/action/ProducerAction.java

@ -0,0 +1,68 @@
1
package com.ai.ipu.ddmp.data.action;
2

3
import java.rmi.RemoteException;
4

5
import javax.servlet.http.HttpServletRequest;
6

7
import org.springframework.web.bind.annotation.RequestMapping;
8
import org.springframework.web.bind.annotation.RestController;
9

10
import com.ai.aif.msgframe.MfProducerClient;
11
import com.ai.aif.msgframe.common.exception.MsgFrameException;
12
import com.ai.aif.msgframe.common.message.MsgFTextMessage;
13
import com.ai.ipu.basic.string.StringUtil;
14
import com.ai.ipu.ddmp.data.util.AppConstant;
15
import com.ai.ipu.ddmp.data.util.ReturnCode;
16
import com.alibaba.fastjson.JSONObject;
17

18
@RestController
19
@RequestMapping("/rest/Producer")
20
public class ProducerAction {
21

22
	@RequestMapping(value = "/SendTextMessage")
23
    public String sendTextMessage(HttpServletRequest req) {
24
		//获取参数
25
        String topic = req.getParameter("topic"), msg = req.getParameter("msg");
26
        String tag = req.getParameter("tag");
27
		// 返回处理结果
28
        JSONObject obj = new JSONObject();
29
        obj.put(AppConstant.result.RETURN_CODE, ReturnCode.SUCCESS.getCode());
30
        obj.put(AppConstant.result.RETURN_MSG, ReturnCode.SUCCESS.getDescription());
31
        
32
        if (!StringUtil.isEmpty(topic))
33
        {
34
        	if (!StringUtil.isEmpty(msg))
35
        	{
36
        		MfProducerClient client = new MfProducerClient();
37
    			MsgFTextMessage message = new MsgFTextMessage(msg);
38
    			if (!StringUtil.isEmpty(tag)) 
39
    				message.setFilterTag(tag);// 设置消息tag
40
    			try {
41
    				client.send(topic, message);
42
    			} catch (RemoteException e) {
43
    				// TODO Auto-generated catch block
44
    				e.printStackTrace();
45
    				obj.put(AppConstant.result.RETURN_CODE, ReturnCode.INSIDE_ERROR.getCode());
46
                	obj.put(AppConstant.result.RETURN_MSG, ReturnCode.INSIDE_ERROR.getDescription()+",发送文本消息失败!无法连接到MQ");
47
    			} catch (MsgFrameException e) {
48
    				// TODO Auto-generated catch block
49
    				e.printStackTrace();
50
    				obj.put(AppConstant.result.RETURN_CODE, ReturnCode.INSIDE_ERROR.getCode());
51
                	obj.put(AppConstant.result.RETURN_MSG, ReturnCode.INSIDE_ERROR.getDescription()+",发送文本消息失败!");
52
    			}
53
        	}
54
        	else
55
        	{
56
            	obj.put(AppConstant.result.RETURN_CODE, ReturnCode.PARAM_ERROR.getCode());
57
            	obj.put(AppConstant.result.RETURN_MSG, ReturnCode.PARAM_ERROR.getDescription()+",发送文本消息失败!msg为空");
58
            }
59
        }
60
        else
61
        {
62
        	obj.put(AppConstant.result.RETURN_CODE, ReturnCode.PARAM_ERROR.getCode());
63
        	obj.put(AppConstant.result.RETURN_MSG, ReturnCode.PARAM_ERROR.getDescription()+",发送文本消息失败!topic为空");
64
        }
65
			
66
        return obj.toString();
67
	}
68
}

+ 3 - 0
ipu-ddmp-data/src/main/java/com/ai/ipu/ddmp/data/config/DataConfig.java

@ -38,6 +38,9 @@ public class DataConfig {
38 38
	public String[] getTopics() {
39 39
		return topics.split(getSeperator());
40 40
	}
41
	public String getOrigTopics() {
42
		return topics;
43
	}
41 44
	public void setTopics(String topics) {
42 45
		this.topics = topics;
43 46
	}

+ 9 - 0
ipu-ddmp-data/src/main/java/com/ai/ipu/ddmp/data/util/AppConstant.java

@ -0,0 +1,9 @@
1
package com.ai.ipu.ddmp.data.util;
2

3
public class AppConstant {
4
	public interface result{
5
		public static final String RETURN_CODE = "returnCode";
6
		public static final String RETURN_MSG = "returnMsg";
7
		
8
	}
9
}

+ 23 - 0
ipu-ddmp-data/src/main/java/com/ai/ipu/ddmp/data/util/ReturnCode.java

@ -0,0 +1,23 @@
1
package com.ai.ipu.ddmp.data.util;
2

3
public enum ReturnCode {
4
	SUCCESS("0000", "成功"),
5
    INSIDE_ERROR("0111","系统内部错误"),
6
    PARAM_ERROR("0112","参数有误");
7
	
8
	private String code;
9
	private String description;
10

11
	private ReturnCode(String code, String description) {
12
		this.code = code;
13
		this.description = description;
14
	}
15

16
	public String getCode() {
17
		return this.code;
18
	}
19
	
20
	public String getDescription() {
21
		return this.description;
22
	}
23
}