SpringBoot學習筆記04——SpringBoot整合RabbitMQ(上)
阿新 • • 發佈:2018-11-12
首先需要搭建一個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中看到是否收到資料
我這裡是一共發了兩條。