使用SpringAMQP的基本步骤

概述

SpringAMQP是一个基于Spring框架的开源项目,用于支持使用AMQP(Advanced Message Queuing Protocol)进行消息传递。它提供了对AMQP通信的简化抽象和集成,使得在Spring应用程序中使用AMQP变得更加简单和方便。

SpringAMQP的主要功能如下:

  1. 生产者和消费者:SpringAMQP提供了生产者和消费者的抽象,使得开发人员可以轻松地发送和接收消息。通过使用SpringAMQP,可以方便地将消息发送到消息队列、交换机或特定的路由键,并从消息队列中消费消息。

  2. 异步处理:SpringAMQP支持异步消息处理,可以使用回调方式或注解驱动的方式来处理接收到的消息。这样可以实现非阻塞的消息处理,提高系统的并发性能。

  3. 消息转换:SpringAMQP允许开发人员定义消息和Java对象之间的转换规则,以便在发送和接收消息时进行自动转换。这样,开发人员可以直接使用Java对象来表示消息,而无需手动进行序列化和反序列化操作。

  4. 消息确认和事务支持:SpringAMQP提供了消息确认和事务支持,确保消息的可靠传递。开发人员可以选择手动确认消息的接收,或使用事务来确保消息的完整性。

  5. 与Spring框架集成:SpringAMQP紧密地集成到Spring框架中,可以与Spring的其他模块(如Spring Boot、Spring MVC等)无缝协作。开发人员可以方便地通过注解或配置来配置和管理消息的发送和接收。

通过使用SpringAMQP,开发人员可以轻松地在Spring应用程序中实现基于AMQP的消息传递。它提供了一套简单而强大的API,简化了与AMQP协议的交互,使得开发人员能够更加专注于业务逻辑的实现,同时保证了消息的可靠性和性能。

Basic Queue 简单队列模型

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

消息发送

首先配置MQ地址,在publisher服务的application.yml中添加配置:

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

然后在publisher服务中编写测试类SpringAmqpTest,并利用RabbitTemplate实现消息发送:

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@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);
    }
}

消息接收

首先配置MQ地址,在consumer服务的application.yml中添加配置:

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

然后在consumer服务的cn.itcast.mq.listener包中新建一个类SpringRabbitListener,代码如下:

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

@Component
public class SpringRabbitListener {
    
    

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

猜你喜欢

转载自blog.csdn.net/rqz__/article/details/132246101
今日推荐