springboot整合rabbitMQ


springboot引入了相关的依赖后,提供一个工具类 RabbitTemplate. 发送功能使用这个工具类可以发送消息。

引入依赖

引入rabbitMQ的依赖,web启动项,template
rabbitMQ的依赖: 启动类加载。读取配置文件:
springboot自动装配原理: 引用starter启动依赖时,把对应的自动装配类加载进去,该自动装配类可以读取application配置文件中内容。 DispatherServlet

<!--rabbitmq-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--fastjson-->
 <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.72</version>
</dependency>

创建子工程

第一:新建
在这里插入图片描述
第二:选择maven项目,剩下的就跟往常一样。
在这里插入图片描述
第三:建好的如下图:
在这里插入图片描述

相应的生产者和消费的配置

创建一个application.yml文件,每一个模块都要有这个配置,注意端口号不能重复。

server:
  port: 8081
#rabbit的配置
spring:
  rabbitmq:
    host: 192.168.31.142

在这里插入图片描述

每一个模块都需要新建一个主启动类

@SpringBootApplication
public class PayApp {
    public static void main(String[] args){
        SpringApplication.run(PayApp.class,args);
    }
}

生产者

该模式是以广播模式为例:
该生产者是以订单为例子:
// 序列化过程 将交换机的名称 路由key不填,
rabbitTemplate.convertAndSend(“ban129_exchange11”, “”, JSON.toJSONString(map))
假如用主题模式:
rabbitTemplate.convertAndSend(“ban129_exchange11”, “lazy.orange.rabbit”, JSON.toJSONString(map));
就相当于这就话:channel.basicPublish(“ban129_exchange_topic”,“lazy.orange.rabbit”,null,msg.getBytes());

@RestController
public class OrderController {
    @Autowired
    private RabbitTemplate rabbitTemplate;

    @GetMapping("/order")
    public String order() {
        System.out.println("订单下单成功");
        Map<Object, Object> map = new HashMap<>();
        map.put("orderId", 1);
        map.put("orderName", "张三");
        map.put("orderPhone", "13923920139");
//        序列化过程
        rabbitTemplate.convertAndSend("ban129_exchange11", "",JSON.toJSONString(map));
        return "订单下单成功";
    }
}

消费者01

该消费者01是以库存为例子:
表示监听rabbitmq,queues表示队列名称
@RabbitListener(queues = {“ban129_fanout22”})

@Component
public class StockController {
    @RabbitListener(queues = {"ban129_fanout22"})
    private void pay(String msg){
        //        将json转换为map类型
            Map map = JSON.parseObject(msg, Map.class);
            System.out.println("支付端接收订单信息:"+map);
    }
}

消费者02

该消费者02是以支付为例子:
表示监听rabbitmq,queues表示队列名称
@RabbitListener(queues = {“ban129_fanout11”})

@Component
public class PayController {
//    队列中存在消息则立即回调方法
    @RabbitListener(queues = {"ban129_fanout11"})
    private void pay(String msg){
    //        将json转换为map类型
        Map map = JSON.parseObject(msg, Map.class);
        System.out.println("支付端接收订单信息:"+map);
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值