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);
posted @ 2020-06-04 16:46  三人語歌  阅读(329)  评论(0编辑  收藏  举报