Springboot集成RabbitMQ

一、创建用户并授权

创建用户

rabbitmqctl add_user admin admin

设置管理员

rabbitmqctl set_user_tags admin administrator

设置权限

 rabbitmqctl set_permissions -p / admin "." "." ".*"

二、在yml文件配置

rabbitmq:
    username: admin
    password: admin
    virtual-host: /
    host: 10.73.100.154
    port: 5672

三、写个配置RabbitMq工具类

1.fanout模式

@Configuration
public class RabbitMqConfiguration {


    /**
     * 声明fanout模式的交换机
     */
    @Bean
    public FanoutExchange fanoutExchange(){
        return new FanoutExchange("ex",true,false);
    }

    /**
     * 声明相应的队列
     */
    @Bean
    public Queue queue(){
        return new Queue("xin",true);
    }

    /**
     * 完成绑定关系(交换机和队列的绑定关系)
     */
    @Bean
    public Binding binding(){
        return BindingBuilder.bind(queue()).to(fanoutExchange());
    }
}

2.direct模式

@Configuration
public class RabbitMqDirectConfiguration {


    /**
     * 声明direct模式的交换机
     */
    @Bean
    public DirectExchange directExchange(){
        return new DirectExchange("direct",true,false);
    }

    /**
     * 声明相应的队列
     */
    @Bean
    public Queue queue(){
        return new Queue("route.queue",true);
    }

    /**
     * 完成绑定关系(交换机和队列的绑定关系)
     */
    @Bean
    public Binding binding(){
        return BindingBuilder.bind(queue()).to(directExchange()).with("route");
    }
}

四、发送消息队列

@Service
public class RabbitTest {
    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void test(){
        String order = UUID.randomUUID().toString();

        //参数:1交换机、2路由key或队列、3消息内容
        String ex = "ex";//交换机
        String route = "";//路由(direct加上路由key就行) (topic模式的参数  #(0个或多个),*(至少要有一个))
        rabbitTemplate.convertAndSend(ex,route,order);
    }
}

五、然后启动测试类就交换机和队列就绑定上了,下面是启动前的

在这里插入图片描述
在这里插入图片描述
启动后的
在这里插入图片描述

在这里插入图片描述

六、接受消息队列

在这里插入图片描述

七.使用注解

生产者

@Service
public class RabbitTestP {
    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void test(){
        String order = UUID.randomUUID().toString();

        //参数:1交换机、2路由key或队列、3消息内容
        String ex = "direct";//交换机
        String route = "route";//路由key或者模糊查询的条件
        rabbitTemplate.convertAndSend(ex,route,order);
    }
}

消费者

@Component
@RabbitListener(bindings = @QueueBinding(
        //1、队列名字 2、是否持久化 3、使用完是否自动删除
        value = @Queue(value = "queue",durable = "true",autoDelete = "false"),
        //1、交换机名字 2、模式类型
        exchange = @Exchange(value = "ex",type = ExchangeTypes.TOPIC),
        //和数据库的模糊查询一个意思  #(0个或多个),*(至少要有一个)
        key = "#s*"
))
public class RabbitTestC {

    @RabbitHandler
    public void reviceInfo(String info){
        System.out.println("消息" + info);
    }
}

测试类

@SpringBootTest
class RabbitMqApplicationTests {

    @Autowired
    private RabbitTestP rabbitTestP;

    @Test
    void contextLoads() {
        rabbitTestP.test();
    }

}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱穿背带裤的馫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值