前提已有 Exchange, Queue, Routing Key, 可以在 web 頁面點擊鼠標創建, 也可在消費端通過代碼自動創建
web 頁面配置步驟: https://www.cnblogs.com/huanggy/p/9695712.html
消費端: https://www.cnblogs.com/huanggy/p/9695934.html
假設要發送訂單消息, 具體流程如下:
1, 創建 springboot 項目, 添加依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
2, application.properties
# rabbitmq spring.rabbitmq.addresses=*******:5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest spring.rabbitmq.virtual-host=/ spring.rabbitmq.connection-timeout=15000
3, 建立消息內容對用的實體類(這里是 order ), 這個實體必須實現序列化接口, 因為這個對象將要進行網絡傳輸, 會發送到 rabbitmq 服務器
4, 發送消息
1) 注入 RabbitTemplate
2) 調用 void convertAndSend(String exchange, String routingKey, final Object object, CorrelationData correlationData) throws AmqpException 方法來發送消息
@Component public class OrderSender { @Autowired private RabbitTemplate rabbitTemplate; public void send(Order order) throws Exception { // 自定義消息唯一標識 CorrelationData correlationData = new CorrelationData(); correlationData.setId(order.getMsgId()); // exchange, routing, 消息內容, 消息唯一標識 rabbitTemplate.convertAndSend("order-exchange", "order.rk1", order, correlationData); } }
5, 測試
@RunWith(SpringRunner.class) @SpringBootTest public class ApplicationTests { @Autowired private OrderSender orderSender; @Test public void contextLoads() { } @Test public void testSend1() throws Exception { Order order = new Order(); order.setId(1); order.setName("測試訂單1"); order.setMsgId(UUID.randomUUID().toString()); order.setCreateTime(new Date()); orderSender.send(order); } }
6, 管控台查看