栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

RabbitMQ整合Springboot

RabbitMQ整合Springboot

首先、准备依赖



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.5.9
         
    
    com.example
    rabbitmqboot
    0.0.1-SNAPSHOT
    rabbitmqboot
    rabbitmqboot
    
        1.8
    
    
        
            org.springframework.boot
            spring-boot-starter-amqp
        

        
            org.springframework.boot
            spring-boot-starter-web
        

修改配置文件

spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

创建交换机

package com.example.rabbitmqboot.common;

public class Constant {

    public static final String DIRECT_EXCHANGE_A = "EXCHANGE_A";
    public static final String QUEUE_A = "QA";
}

@Configuration
public class AllExchange {

    @Bean("exchange_A")
    public DirectExchange exchangeA() {
        return new DirectExchange(Constant.DIRECT_EXCHANGE_A);
    }
}

创建队列,同时绑定交换机

 @Bean("queueA")
    public Queue queueA () {
        //HashMap arguments = new HashMap<>(3);
        //绑定死信队列
        //arguments.put("x-dead-letter-exchange", Constant.DIRECT_EXCHANGE_Y);
        //arguments.put("x-dead-letter-routing-key", "YD");
        //arguments.put("x-message-ttl", 40000);
        //return QueueBuilder.durable(Constant.QUEUE_A).withArguments(arguments).build();
       return QueueBuilder.durable(Constant.QUEUE_A).build();
    }

    @Bean
    public Binding bindingAToX(@Qualifier("queueA")Queue queue,
                               @Qualifier("exchange_A")DirectExchange exchange) {
        return BindingBuilder.bind(queue).to(exchange).with("XA");
    }

发送消息

package com.example.rabbitmqboot.controller;

import com.example.rabbitmqboot.common.Constant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@Slf4j
@RestController
public class MessageController {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @RequestMapping("/sendMessage/{message}")
    public ResponseEntity sendMessage(@PathVariable("message") String message) {
        log.info("发送消息: {},当前时间:{}", message, new Date());
        rabbitTemplate.convertAndSend(Constant.DIRECT_EXCHANGE_A, "XA", "交换机Key:XA --" + message);
        return new ResponseEntity<>("ok",HttpStatus.OK);
    }

}

监听获得消息

package com.example.rabbitmqboot.consumer;

import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

import java.io.UnsupportedEncodingException;
import java.util.Date;

@Slf4j
@Component
public class Consumer {

    @RabbitListener(queues = "queueA")
    public void getMessage(Message message, Channel channel) {
        try {
            String s = new String(message.getBody(),"UTF-8");
            log.info(" 时间:{} , 消息: {}", new Date(), s);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/746451.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号