RabbitMQ 工作队列模式 Work Queue Demo

这篇具有很好参考价值的文章主要介绍了RabbitMQ 工作队列模式 Work Queue Demo。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

RabbitMQ 工作队列模式 Work Queue Demo

工作队列模式,一个消息只能有一个消费者消费

 生产者发送20条消息RabbitMQ 工作队列模式 Work Queue Demo

消费者有两个

第一个消费

睡一秒取一个

第二个睡2秒取

RabbitMQ 工作队列模式 Work Queue Demo

 RabbitMQ 工作队列模式 Work Queue Demo

public class WorkConsumerTest1 {
    public static void main(String[] args) throws IOException, TimeoutException {
        //1 创建连接工厂
        ConnectionFactory connectionFactory=new ConnectionFactory();
        //2 设置rabbitmq  ip地址
        connectionFactory.setHost("localhost");
        //3 创建连接对象   Conection对象
        Connection connection=connectionFactory.newConnection();
        //4 创建管道  Chanel
        Channel channel=connection.createChannel();
        //5 设置队列属性
        /**
         * 第一个参数:队列的名称
         * 第二个参数:队列是否要持久化
         * 第三个参数:是否排他性(是否在同一个Connection,如果设置为true,不同的Connection是获得不到消息的)
         * 第四个参数:是否自动删除消息
         * 第五个参数:是否要设置一些额外的参数
         */
        channel.queueDeclare("02-work",false,false,true,null);
        //channel.basicQos(1);
        //6 使用chanel 去 rabbitmq 获取消息进行消费
        /**
         * 第一个参数:队列的名称
         * 第二个参数:是否自动签收
         * 第三个参数:消息属性
         * 第四个参数:消息内容
         */
        channel.basicConsume("02-work", false,new DeliverCallback(){
            /**
             * 当消息从mq 中取出来了会回调这个方法
             * 消费者消费消息就在这个  handle中进行处理
             */
            @Override
            public void handle(String s, Delivery delivery) throws IOException {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("消息中的内容为:"+new String(delivery.getBody()));
                //channel.basicAck(delivery.getEnvelope().getDeliveryTag(),false);
            }
        },new CancelCallback(){
            /**
             * 当消息取消了会回调这个方法
             */
            @Override
            public void handle(String s) throws IOException {
                System.out.println(111);
            }
        });
        //7 关闭消息   注意消费者 需要持续监听,不要关闭
        //channel.close();
        //connection.close();
    }
}

RabbitMQ 工作队列模式 Work Queue Demo

手动签收的好处:比如说你自动签收了,消息中间件上删除了,结果执行逻辑出错了

手动签收好处就是当出现异常 ,有余地可以再次执行文章来源地址https://www.toymoban.com/news/detail-431029.html

到了这里,关于RabbitMQ 工作队列模式 Work Queue Demo的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 消息队列之RabbitMQ工作模式

    提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 消息队列之RabbitMQ工作模式 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 在这篇博客中,我将深入探讨 RabbitMQ 的工作模式,带你

    2024年01月18日
    浏览(56)
  • RabbitMQ消息队列的工作模式

    官方文档地址:https://www.rabbitmq.com/getstarted.html 工作模式其实就是消息队列分发消息的路由方式。 RabbitMQ常用的几种工作模式: 简单模式 WorkQueues工作队列模式 PubSub生产者/PubSub消费者模式 Routing路由模式 Topics通配符模式 发布/订阅模式(Publish/Subscribe):该模式用于一对多的

    2024年02月15日
    浏览(46)
  • 消息队列——rabbitmq的不同工作模式

    目录 Work queues 工作队列模式  Pub/Sub 订阅模式 Routing路由模式 Topics通配符模式   工作模式总结 C1和C2属于竞争关系,一个消息只有一个消费者可以取到。  代码部分只需要用两个消费者进程监听同一个队里即可。 两个消费者呈现竞争关系。 用一个生产者推送10条消息 两个监

    2024年02月16日
    浏览(45)
  • 消息队列——RabbitMQ基本概念+容器化部署和简单工作模式程序

    目录 基本概念  MQ 的优势  1.应用解耦  2.异步提速  3.削峰填谷  MQ 的劣势 使用mq的条件  常见MQ产品  RabbitMQ简介 RabbitMQ的六种工作模式   JMS RabbitMQ安装和配置。 RabbitMQ控制台使用。 RabbitMQ快速入门——生产者 需求: RabbitMQ快速入门——消费者 小结  多个系统之间的通信方

    2024年02月16日
    浏览(46)
  • RabbitMQ(一) - 基本结构、SpringBoot整合RabbitMQ、工作队列、发布订阅、直接、主题交换机模式

    Publisher : 生产者 Queue: 存储消息的容器队列; Consumer:消费者 Connection:消费者与消息服务的TCP连接 Channel:信道,是TCP里面的虚拟连接。例如:电缆相当于TCP,信道是一条独立光纤束,一条TCP连接上创建多少条信道是没有限制的。TCP一旦打开,就会出AMQP信道。无论是发布消息

    2024年02月14日
    浏览(55)
  • RabbitMQ:概念和安装,简单模式,工作,发布确认,交换机,死信队列,延迟队列,发布确认高级,其它知识,集群

    1.1.1.什么是MQ MQ(message queue:消息队列) ,从字面意思上看,本质是个 队列 , FIFO 先入先出 ,只不过队列中存放的 内容是message 而已 ,还是一种 跨进程的通信机制 , 用于上下游传递消息 。在互联网架构中,MQ 是一种非常常见的上下游 “逻辑解耦+物理解耦” 的消息通信服

    2024年01月20日
    浏览(75)
  • RabbitMQ(Message Queue消息队列)

    当消息发送者发送消息以后,将由消息代理接管,消息代理保证消息传递到指定目的地。 队列(queue):点对点消息通信(point-to-point) 主题(topic):发布(publish)/订阅(subscribe)消息通信 JMS(Java Message Service) AMQP(Advanced Message Queuing Protocol) 定义 Java api 网络线级协议

    2023年04月08日
    浏览(82)
  • RabbitMQ之Queue(队列)属性解读

    ​Queue(队列)是RabbitMQ的内部对象,用于存储消息队列,并将它们转发给消费者; ​  RabbitMQ中的Queue(队列)是消息的缓冲区,用于存储待处理的消息。它是RabbitMQ中最基本的消息传递模型。Queue具有以下特点:     队列是消息的容器:队列用于存储待处理的消息,消息按

    2024年03月09日
    浏览(43)
  • docker rabbitmq-清空queue队列数据

    执行以下命令,连接到 RabbitMQ 容器的 bash 终端: 在 RabbitMQ 容器中,使用以下命令打开 RabbitMQ 命令行管理工具: 输入以下命令,列出所有的队列: 这将显示所有队列的信息,包括队列的名称和消息数量。 确定要清空的队列名称,并使用以下命令删除该队列的所有消息: 将

    2024年02月16日
    浏览(47)
  • RabbitMQ入门案例之Work模式

    本文章将介绍RabbitMQ的Work模式,其中这个模式又细分为轮询分发和公平分发,本文将会用Java代码结合RabbitMQ的web管理界面进行实操演示。 官网文档地址:https://rabbitmq.com/getstarted.html RabbitMQ的Work模式是一种简单的消息队列模式,也叫做“竞争消费者模式”或“任务分发模式”

    2024年02月11日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包