首页 > 其他 > 详细

rabbitmq的拉模式

时间:2020-11-08 16:50:19      阅读:72      评论:0      收藏:0      [点我收藏+]

rabbitmq的拉模式

rabbitmq(一)-基本入门我们已经展示了rabbitmq的推模式(mq主动推送,消费者监听)

其实rabbitmq还提供了一种拉模式;

1、直接上示例代码:

rabbitmq(一)-基本入门的基础上
我们把DemoLister注释掉
技术分享图片

同时增加主动获取消息的接口

    @GetMapping("getMq")
    public String getMq() throws IOException {
        ConnectionFactory connectionFactory = rabbitTemplate.getConnectionFactory();
        Connection connection = connectionFactory.createConnection();
        Channel channel = connection.createChannel(false);
        String queueName = "demo";
        boolean autoAck = false ;
        channel.basicQos(1);
        GetResponse response= channel.basicGet(queueName, autoAck);

        if(null == response){
            return "没有消息";
        }
        byte[] body = response.getBody();
        String msg = new String(body);
        channel.basicAck(response.getEnvelope().getDeliveryTag(),false);
        return msg;
    }

2、模拟过程

执行命令curl localhost:8080/sendMq?msg=ssg发送消息
技术分享图片

执行命令curl localhost:8080/getMq获取消息
技术分享图片

再执行一次命令curl localhost:8080/getMq获取消息
技术分享图片

备注

不能将拉模式放在一个循环里来代替推模式;
这样做会严重影响 RabbitMQ的性能。
如果要实现高吞吐量,消费者理应使用推模式。

代码地址:
git clone -b teacher-pushpoll https://gitee.com/guoeryyj/rabbitmq-teacher.git

rabbitmq的拉模式

原文:https://www.cnblogs.com/yeyongjian/p/13944021.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!