Spring boot引入rabbitMQ消息队列
1.jar包引入
<!-- rabbitmq --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
2. application.properties配置文件设置
spring.application.name=springboot-rabbitmq spring.rabbitmq.host=127.0.0.1 spring.rabbitmq.port=5672 spring.rabbitmq.username=admin spring.rabbitmq.password=password spring.rabbitmq.publisher-confirms=true spring.rabbitmq.virtual-host=/
3. java监听(获取MQ队列中数据)
import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.xxxxx.service.IServiceZZhpjcjxxOriginal; @RestController @RequestMapping(value = "/") public class OriginalController{ private static Logger log = LoggerFactory.getLogger(OriginalController.class); @Autowired IServiceZZhpjcjxxOriginal serviceZZhpjcjxxOriginal; public OriginalController(){ } /** * 原始数据解析 * * @return */ @RabbitListener(queues="jcjxx.original") //监听器监听指定的Queue public void original(String result) { try { //log.info("zbszxfz.jcjxx.original获取原始数据: "+result); Map<String,Object> mapParam = (Map<String,Object>)JSONObject.parse(result); //数据库保存 serviceZZhpjcjxxOriginal.insertZZhpjcjxxOriginal(mapParam); mapParam = null; }catch (Exception e) { e.printStackTrace(); } } }
4. 数据推送(向MQ队列推送数据)
import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.amqp.core.AmqpTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.alibaba.fastjson.JSON; @Component public class RabbitMqProducer { private static Logger logger = LoggerFactory.getLogger(RabbitMqProducer.class); @Autowired private AmqpTemplate rabbitTemplate; //原始数据推送rabbitMQ public void jcjxxOriginalSend(Map<String, Object> result) { try { //注意,这里是向Exchanges中推送的数据 this.rabbitTemplate.convertAndSend("jcjxx.original.fanoutExchange", "", JSON.toJSONString(result)); //logger.info("RabbitMQ推送成功!"); } catch (Exception e) { logger.error("RabbitMQ推送失败!" + e.getMessage()); } } }
然后直接调用就行
@Autowired RabbitMqProducer rabbitMqProducer; Map<String,Object> map = new HashMap<String,Object>(); map.put("ORIGINALDATA", "测试数据"); map.put("DATASTATE", "测试数据"); rabbitMqProducer.jcjxxOriginalSend(map);