SpringCloud RabbitMQ 使用

第一步:

1
2
3
4
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

第二步yml中配置rabbitMq地址:

1
2
3
4
5
6
spring:
  rabbitmq:
    host: 10.10.10.103
    port: 5672
    username: guest
    password: guest

第三步 接收方:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.example.order.message;
 
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
 
/**
 * @Title: MqReceiver
 * @ProjectName order
 * @date 2019/11/2011:06
 */
@Slf4j
@Component
public class MqReceiver {
 
    //第一种方法 , 需要先创建队列
    // 1. @RabbitListener(queues = "myQueue")
    /*@RabbitListener(queues = "myQueue")
    public void process1(Object message) {
        log.info("MqReceiver message:{}" , message);
    }*/
 
    //2. 自动创建队列 @RabbitListener(queuesToDeclare = @Queue("myQueue"))
    /*@RabbitListener(queuesToDeclare = @Queue("myQueue"))
    public void process2(Object message) {
        log.info("MqReceiver message:{}" , message);
    }*/
 
    //3. 自动创建, Exchange和Queue绑定
    @RabbitListener(bindings = @QueueBinding(value = @Queue("myQueue"),exchange = @Exchange("myExchange")))
    public void process(String message) {
        log.info("MqReceiver: {}", message);
    }
 
    /**
     * 分组
     * 数码供应商服务 接收消息
     * @param message
     */
    @RabbitListener(bindings = @QueueBinding(exchange = @Exchange("myOrder"),key = "computer",value = @Queue("computerOrder")))
    public void processComputer(String message) {
        log.info("computer MqReceiver: {}", message);
    }
    /**
     * 水果供应商服务 接收消息
     * @param message
     */
    @RabbitListener(bindings = @QueueBinding(exchange = @Exchange("myOrder"),key = "fruit",value = @Queue("fruitOrder")))
    public void processFruit(String message) {
        log.info("fruit MqReceiver: {}", message);
    }
 
}

  

第四步 发送方:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.example.order.controller;
 
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import java.util.Date;
 
/**
 * @Title: MqController
 * @ProjectName order
 * @date 2019/11/2011:32
 */
@RestController
@RequestMapping("mq")
public class MqController {
    @Autowired
    private AmqpTemplate amqpTemplate;
 
    // 第1,2中方式
    @GetMapping("/send1")
    public void send1() {
        amqpTemplate.convertAndSend("myQueue", "now : " + new Date());
    }
 
    // 方式3发送
    @GetMapping("/send2")
    public void send2() {
        amqpTemplate.convertAndSend("myOrder","computer", "now : " + new Date());
    }
    @GetMapping("/send3")
    public void send3() {
        amqpTemplate.convertAndSend("myQueue","myExchange", "now : " + new Date());
    }
    @GetMapping("/send4")
    public void send4() {
        amqpTemplate.convertAndSend("myOrder","fruit", "now : " + new Date());
    }
 
 
}

 

 

posted @   qukaige  阅读(695)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示