RabbitMq入门

RabbitMq入门

RabbitMq入门-队列

官网地址
https://www.rabbitmq.com
参考文档
https://www.rabbitmq.com/tutorials/tutorial-one-java.html

1.队列-queque,基于springboot实现一个简单的例子

RabbitMq入门-简单使用
在1这里插入图片描述上图是该demo的结构图
producer 负责生产消息,把消息发送到队列中
queue 队列,负责存储接收,分发队列消息
customer 消费者,负责接收消费消息

具体实现如下,先在pom.xml中引入rabbitmq的依赖(建一个springboot工程这些就不说了)

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
    <version>3.0.5.RELEASE</version>
</dependency>

创建一个queue(定义个名称叫order的bean)
在这里插入图片描述

@Bean
public Queue orderQueue() {
    return new Queue("order");
}

这样就完成了对queue的创建

接着创建一个生产者(创建一个类OrderSender)
在这里插入图片描述

定义生产者
@Component
public class OrderSender {
    @Autowired
    private AmqpTemplate rabbitTemplate;
    private final static String routeKey="order";
    public void send() {
        String context = "create an order " + new Date();
        System.out.println("Sender : " + context);
        this.rabbitTemplate.convertAndSend(routeKey, context);
    }
}

这里说一下routeKey的作用,这里的routeKey其实就是队列的名称,通过这个routeKey参数绑定到name为order的队列(queue)中去

同理也创建一个消费者
在这里插入图片描述

    @RabbitHandler
    public void process(String msg) {
        System.out.println("Receiver : " + msg);
        engineService.saveOrder();
    }

@RabbitListener(queues = “order”)
这个注解让消费者绑定到了order队列中
@RabbitHandler 是标注接收队列消息的处理方法,这里可以执行具体的业务代码,就比如我这里执行了一个生成订单的代码。

生产者-队列-消费者 都定义好之后,还需要一个执行调用生产者的方法,我简单的写了一个调用的controller进行调用

在这里插入图片描述
启动项目,启动完成后取rabbitmq的控制台看看
在这里插入图片描述可以看到上面已经生成了order的队列,点进去看一下
在这里插入图片描述
因为我启动了两个实例,可以看到,这个队列有两个消费者
去浏览器执行一下 http://127.0.0.1:8080/queue

查看两个消费者的控制台

实例1的控制台
在这里插入图片描述
实例2的控制台在这里插入图片描述
多试几次
发现各自的控制台依次输出如下

实例1的控制台在这里插入图片描述实例2的控制台
在这里插入图片描述

这说明了在这种模式下,一个消息只能被一个消费者实例消费,且RabbitMQ默认用轮询的方式把消息分发给实例,最后补个图吧
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值