package com.gxx.dubbo.server.web; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import org.springframework.amqp.core.AmqpTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.alibaba.fastjson.JSON; /** * rabbitmq控制类 * @author Gxx */ @Controller @RequestMapping("/rabbitmq/") public class RabbitmqController { /** * 日志处理器 */ private final Logger logger = Logger.getLogger(RabbitmqController.class); /** * direct mq执行器 */ @Autowired private AmqpTemplate directTemplate; /** * fanout mq执行器 */ @Autowired private AmqpTemplate fanoutTemplate; /** * topic mq执行器 */ @Autowired private AmqpTemplate topicTemplate; /** * 发送direct模式mq * @return */ @RequestMapping(value = "/sendDirect") public @ResponseBody String sendDirect(HttpServletRequest request) { logger.info("发送direct模式mq开始~"); for(int i=0;i<5;i++) { logger.info("发送第[" + (i+1) + "]条mq!"); /** * 组织map */ Map map = new HashMap<>(); map.put("index", i+1); map.put("name", request.getParameter("name") + (i+1)); /** * 转json串 */ String jsonString = JSON.toJSONString(map); /** * 发送mq */ directTemplate.convertAndSend("server.to.client.direct.key", jsonString); } logger.info("发送direct模式mq结束~"); return "发送direct模式mq结束~"; } /** * 发送fanout模式(发布/订阅模式)mq * @return */ @RequestMapping(value = "/sendFanout") public @ResponseBody String sendFanout(HttpServletRequest request) { logger.info("发送fanout模式(发布/订阅模式)mq开始~"); for(int i=0;i<5;i++) { logger.info("发送第[" + (i+1) + "]条FanoutMq!"); /** * 组织map */ Map map = new HashMap<>(); map.put("index", i+1); map.put("name", request.getParameter("name") + (i+1)); /** * 转json串 */ String jsonString = JSON.toJSONString(map); /** * 发送mq */ fanoutTemplate.convertAndSend(jsonString); } logger.info("发送fanout模式(发布/订阅模式)mq结束~"); return "发送fanout模式(发布/订阅模式)mq结束~"; } /** * 发送topic模式(模糊匹配)mq * @return */ @RequestMapping(value = "/sendTopic") public @ResponseBody String sendTopic(HttpServletRequest request) { logger.info("发送topic模式(模糊匹配)mq开始~"); for(int i=0;i<5;i++) { logger.info("发送第[" + (i+1) + "]条TopicMq!"); /** * 组织map */ Map map = new HashMap<>(); map.put("index", i+1); map.put("name", request.getParameter("name") + (i+1)); /** * 转json串 */ String jsonString = JSON.toJSONString(map); /** * 发送mq */ topicTemplate.convertAndSend("a.b.c.topic", jsonString); } logger.info("发送topic模式(模糊匹配)mq结束~"); return "发送topic模式(模糊匹配)mq结束~"; } }