RabbitMQ消息队列

首先引入相关依赖:

java 复制代码
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

配置applicaiton.yml:

XML 复制代码
server:
  port: 8082
spring:
  rabbitmq:
    host: 192.168.37.105
    port: 5672
    username: admin
    password: admin
    virtual-host: /

shop:
  exchange: shop.exchange.direct
  queue: shop.queue
  routingKey: shop.routingKey

编写配置类RabbitMqConfig:

java 复制代码
@Configuration
public class RabbitmqConfig {

    @Value("${shop.exchange}")
    private String exchange;
    @Value("${shop.queue}")
    private String queue;
    @Value("${shop.routingKey}")
    private String routingKey;

    @Bean
    public Exchange getExchange(){
        return new DirectExchange(exchange);
    }

    @Bean
    public Queue getQueue(){
        return new Queue(queue);
    }

    @Bean
    public Binding binding(Exchange exchange,Queue queue){
        return BindingBuilder.bind(queue).to(exchange).with(routingKey).noargs();
    }

    /**
     * 消息转化器
     * 将对象转化为 Json 字符串
     */
    @Bean
    public MessageConverter messageConverter(){
        return new Jackson2JsonMessageConverter();
    }
}

如果不配置消息转化器,默认只能处理字符串消息。不能处理对象!!!

创建生产者:

java 复制代码
@RestController
@RequiredArgsConstructor
@RequestMapping("producer02")
public class Producer02Controller {

    @Value("${shop.exchange}")
    private String exchange;

    @Value("${shop.routingKey}")
    private String routingKey;

    private final RabbitTemplate rabbitTemplate;

    @GetMapping("/send")
    public String sendMsg(){
        rabbitTemplate.convertAndSend(exchange,routingKey,new Student(2,"Alice","178",20));
        return "Producer02==>发送成功!";
    }
}

创建消费者(获取消息):

java 复制代码
@Component
public class MegListener {

    @RabbitListener(queues = "${shop.queue}")
    public void readStu(String msg) {
        System.out.println("shop.queue:" + msg);
    }

    @RabbitListener(queues = "${shop.queue}")
    public void readStu(Student stu) {
        System.out.println("shop.queue:" + stu);
    }
}

创建实体类:

java 复制代码
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Student implements Serializable {
    private Integer id;
    private String name;
    private String phone;
    private Integer age;
}

进行测试:

相关推荐
大葱白菜5 分钟前
Java Set 集合详解:从基础语法到实战应用,彻底掌握去重与唯一性集合
java·后端
大葱白菜6 分钟前
Java Map 集合详解:从基础语法到实战应用,彻底掌握键值对数据结构
java·后端
添乱6 分钟前
「Java案例」判断是否是闰年的方法
java
FG.11 分钟前
Day22
java·面试
菜鸟的迷茫13 分钟前
Redis 缓存雪崩、穿透、击穿面试题深度解析与 Spring Boot 实战代码示例
java
珹洺24 分钟前
C++算法竞赛篇:DevC++ 如何进行debug调试
java·c++·算法
SHUIPING_YANG31 分钟前
根据用户id自动切换表查询
java·服务器·数据库
爱吃烤鸡翅的酸菜鱼43 分钟前
IDEA高效开发:Database Navigator插件安装与核心使用指南
java·开发语言·数据库·编辑器·intellij-idea·database
惊涛骇浪、1 小时前
SpringMVC + Tomcat10
java·tomcat·springmvc
墨染点香1 小时前
LeetCode Hot100【6. Z 字形变换】
java·算法·leetcode