SpringBoot整合RabbitMQ -fanout模式

SpringBoot整合RabbitMQ -fanout模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由于是使用真实的阿里云服务器所以需要配置一下rabbitMQ的服务配置yml
注:一定要在阿里云的安全组中开放5672端口

# 服务端口
server:
  port: 8080
# 配置rabbitmq服务
spring:
  rabbitmq:
    username: admin
    password: admin
    virtual-host: /
    host: 139.196.122.115
    port: 5672

在这里插入图片描述

模拟用户下单

package com.newer.rabbitmq.springbootorderrabbitmqproducer.service;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.UUID;

@Service
public class OrderService {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    /**
     * @deprecated :模拟用户下单
     * @param :[userid,productid,num]
     * @return: void
     */
    public void makeOrder(String userid,String productId,Integer num){
           //1.根据商品id查询库存是否充足
           //2.保存订单
           String orderId= UUID.randomUUID().toString();
        System.out.println("订单生成成功:"+orderId);
           //3.通过MQ来完成消息的分发
           //参数1:交换机 参数2:路由key/queue队列名称 参数3:消息内容
           String exchangeName="fanout_order_exchange";
           //由于是fanout模式所以不需要路由key
           String routingkey="";
           rabbitTemplate.convertAndSend(exchangeName,routingkey,orderId);
    }


}

配置类

package com.newer.rabbitmq.springbootorderrabbitmqproducer.config;

import com.rabbitmq.client.AMQP;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitMqConfiguration {

    //1.声明注册fanout模式的交换机
    @Bean
    public FanoutExchange fanoutExchange(){
        return new FanoutExchange("fanout_order_exchange",true,false);
    }
    //2.声明队列sms.fanout.queue email.fanout.queue,duanxin.fanout.queue
    @Bean
    public Queue smsQueue(){
        return new Queue("sms.fanout.queue");
    }
    @Bean
    public Queue emailQueue(){
        return new Queue("email.fanout.queue");
    }
    @Bean
    public Queue duanxinQueue(){
        return new Queue("duanxin.fanout.queue");
    }
    //3.完成绑定关系(完成交换机与队列之间的绑定关系)
    @Bean
    public Binding smsBinding(){
        return BindingBuilder.bind(smsQueue()).to(fanoutExchange());
    }
    @Bean
    public Binding emailBinding(){
        return BindingBuilder.bind(emailQueue()).to(fanoutExchange());
    }
    @Bean
    public Binding duanxinBinding(){
        return BindingBuilder.bind(duanxinQueue()).to(fanoutExchange());
    }

}

测试

package com.newer.rabbitmq.springbootorderrabbitmqproducer;

import com.newer.rabbitmq.springbootorderrabbitmqproducer.service.OrderService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class SpringbootOrderRabbitmqProducerApplicationTests {

	@Autowired
	private OrderService orderService;
	@Test
	void contextLoads() {
		orderService.makeOrder("1","1",12);
	}

}

在这里插入图片描述
在这里插入图片描述
然后我们看一下他们之间的绑定关系绑定上没
在这里插入图片描述
小结:通过springboot整合Rabbitmq是非常便捷的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值