Springboot接入RabbitMQ詳細教程


本文適用於對 RabbitMQ 有所了解的人,在此不討論MQ的原理,只討論如何接入。其實Spring Boot 集成 RabbitMQ 非常簡單,本文章使用的是Spring Boot 提供了spring-boot-starter-amqp 項目對消息各種支持。

接下來將進入正題,六步輕松教你接入RabbitMQ

1.配置pom文件所依賴的主要jar包

<dependency>
     <groupId>org.springframework.amqp</groupId>
     <artifactId>spring-rabbit</artifactId>
     <version>2.0.4.RELEASE</version>
</dependency>

 

2.配置文件(application.properties)

## rabbitmq
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=root
spring.rabbitmq.password=root
spring.rabbitmq.virtual-host=/

# rabbitmq消息確認
spring.rabbitmq.publisher-confirms=true
spring.rabbitmq.publisher-returns=true

## rabbitmq-config
rabbitmq.exchange-key = rabbitmq.test.exchange
rabbitmq.routing-key = rabbitmq.test.routing.key
rabbitmq.queue-name=rabbitmq.queue.name.test

 

3.交換機和隊列綁定配置

@Value("${rabbitmq.queue-name}")
String queueName;

@Value("${rabbitmq.exchange-key}")
String exchangeKey;

@Value("${rabbitmq.routing-key}")
String routingKey;

@Bean(value = "${rabbitmq.queue-name}")
public Queue initOrderCancelQueue(){
    return new Queue(queueName) ;
}

@Bean(value = "${rabbitmq.exchange-key}")
public CustomExchange customExchange(){
    Map<String,Object> args=new HashMap<>();
    return new CustomExchange(exchangeKey,"topic",true,false,args);
}

@Bean
public Binding binding(@Qualifier(value = "${rabbitmq.queue-name}") Queue queue,
                       @Qualifier(value = "${rabbitmq.exchange-key}") CustomExchange exchange){
    return BindingBuilder
            .bind(queue)
            .to(exchange)
            .with(routingKey)
            .and(exchange.getArguments());
}

 

4.生產者

@Value("${rabbitmq.exchange-key}")
String exchangeKey;

@Autowired
private AmqpTemplate amqpTemplate;
/**
 * 發送MQ
 * @param routingKey
 * @param obj 參數
 */
public void sendNotification(String routingKey, Object obj){
    this.amqpTemplate.convertAndSend(exchangeKey,routingKey,obj);
}

 

5消費者

@RabbitHandler
@RabbitListener(queues = "${rabbitmq.queue-name}")
public void receiveRabbitmqMsg(Message msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag){
    String funcName="接收到RabbitmqMsg";
    logger.info("{}:{}",funcName,msg);
    try {

    }catch(Exception e) {

    }finally {

    }
}

 

6.測試

@Autowired
RabbitmqProducer producer;

@Value("${rabbitmq.routing-key}")
String routingKey;

public void sendMsg(){
    TestModel testModel =new TestModel();
    testModel.setName("fxx");
    testModel.setAge(18);
    testModel.setGender("girl");
    try {
        producer.sendNotification(routingKey,testModel);
    }catch (Exception e){
        logger.error("系統異常:"+e.toString());
    }
}

 

搞定!就這么簡單,趕快自己動手試試吧

源碼下載地址

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM