SpringAMQP 基础消息队列 HelloWorld

SpringAMQP的官方地址:https://spring.io/projects/spring-amqp

AMQP:Advanced Message Queuing Protocol,用于在应用程序之间传递业务消息的开放标准,该协议与语言和平台无关,更符合微服务中独立性的要求。

SpringAMQP:基于AMQP协议定义的一套API规范,提供了模板来发送和接受消息。包含两部分,spring-amqp基础抽象,spring-rabbit底层的默认实现

利用SpringAMQP实现HelloWorld中的基础消息队列功能

引入AMQP依赖

publisher和consumer服务都需要amqp依赖,把依赖直接放到父工程中

        <!--AMQP依赖,包含RabbitMQ-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

编写application.yml

publisher和consumer服务的application都添加mq连接信息

spring:
  rabbitmq:
    host: 192.168.223.128 # 主机名
    port: 5672 # 端口
    virtual-host: / # 虚拟主机
    username: guest # 用户名
    password: guest # 密码

publisher编写发送消息代码

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringAmqpTest {
    @Autowired
    private RabbitTemplate rabbitTemplate;
    @Test
    public void testSimpleQueue() {
        String queueName = "simple.queue";
        String message = "hello, spring amqp!";
        rabbitTemplate.convertAndSend(queueName, message);
    }
}

@RunWith(SpringRunner.class)将测试类添加到Spring容器中,自动注入才能生效

@SpringBootTest注解会自动检索程序的配置文件,检索顺序是从当前包开始,逐级向上查找被@SpringBootApplication或@SpringBootConfiguration注解的类

consumer编写获取消息代码

在consumer服务中新建一个类,编写消费逻辑

@Component
public class SpringRabbitListener {
    @RabbitListener(queues = "simple.queue")
    public void listenSimpleQueueMessage(String msg) throws InterruptedException {
        System.out.println("spring 消费者接收到消息 :【" + msg + "】");
    }
}

@Component:添加到spring容器中,spring容器中的一个Bean

@RabbitListener:监听队列,监听simple.queue队列

原文地址:https://www.cnblogs.com/WarBlog/p/15475576.html