SpringBoot学习笔记04——SpringBoot整合RabbitMQ(上)

首先需要搭建一个RabbitMQ的服务,我是在docker跑了一个rabbitMQ的服务,

docker的命令语句 

docker run --name rabbit -P -d rabbitmq:3-management

映射出来的端口号如下图

rabbitMQ这里我就不多讲了,直接上代码

1.首先需要创建SpringBoot项目,添加pom依赖。

创建SpringBoot项目在之前的博客中我已经讲过了下面是链接,大家可以看一下

https://blog.csdn.net/lp840312696/article/details/82392231

需要在创建好的SpringBoot项目中添加rabbitMQ的pom依赖

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

2.向application.properties文件中添加配置

#rabbitMQ的 5672 端口
spring.rabbitmq.addresses=192.168.31.199:32771
#用户名密码
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/
spring.rabbitmq.connection-timeout=15000

3.创建实体对象

如果大家没有@Data注解,需要创建属性的get和set方法。

package com.youyou.entity;

import lombok.Data;

import java.io.Serializable;

@Data
public class Order implements Serializable {

    private String id;

    private String name;

    private String messageId;

}

注意:一定要实现Serializable接口

4.创建向rabbitMQ中发送数据的类(核心)

package com.youyou.producer;

import com.youyou.entity.Order;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.rabbit.support.CorrelationData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 发送订单的类
 */
@Component
public class OrderSend {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void send (Order order) throws Exception{
        CorrelationData correlationData = new CorrelationData();
        correlationData.setId(order.getMessageId());

        rabbitTemplate.convertAndSend("order-exchange" //交换机
                ,"order.abc"  //路由键
                ,order  //发送数据
                ,correlationData);  //消息唯一id
    }

}

5.配置rabbitMQ的交换机和路由键

添加 一个rabbitMQ交换机

添加rabbitMQ队列

到目前为止rabbitMQ的配置整合已经完成。就是这么简单

6.测试

package com.youyou.worldmq;

import com.youyou.entity.Order;
import com.youyou.producer.OrderSend;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.UUID;

@RunWith(SpringRunner.class)
@SpringBootTest
public class MQApplicationTests {
    
    @Autowired
    private OrderSend orderSend;
    @Test
    public void send() throws Exception {
        Order order = new Order();
        order.setId("2018100100001");
        order.setName("测试订单");
        order.setMessageId(System.currentTimeMillis()+"$" + UUID.randomUUID().toString());

        orderSend.send(order);
    }

}

执行之后可以在rabbitMQ中看到是否收到数据

我这里是一共发了两条。

猜你喜欢

转载自blog.csdn.net/lp840312696/article/details/82916834