利用SpringAMQP依赖使用RabbitMQ

cyknote / 2024-03-06 / 原文

消息消费端和提供端需要引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

都需要在application.yml进行如下配置

spring:
  rabbitmq:
    host: 192.168.230.100 #rabbitMQ的主机名
    port: 5672 #rabbitMQ的消息通信端口
    username: cyk #用户名
    password: 123 #密码
    virtual-host: / #虚拟主机(请确保消息发布端和消费端的连接参数一致,账户拥有该虚拟主机的使用权)

 消息提供端

package com.cyk.publisher;

import org.junit.jupiter.api.Test;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class PublisherApplicationTests {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Test
    @RabbitListener(queuesToDeclare = {@Queue("simple.queue")}) //如果不想在管理端手动创建队列,也可以使用这种方式自动创建队列
    void contextLoads() {
        String QueueName = "simple.queue"; //队列名字(请确该队列存在)
        String message = "hello,spring amqp!"; //需要发送的消息
        rabbitTemplate.convertAndSend(QueueName,message);
    }

}

消息消费端

package com.cyk.consumer.listener;

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
public class SpringRabbitLIstener {

    @RabbitListener(queues = "simple.queue")
    void contextLoads(String msg) {
        System.out.println("接收到消息:"+msg);
    }
}