IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> RabbitMq 简单工作模式 -> 正文阅读

[大数据]RabbitMq 简单工作模式

工作模式简单介绍

图中一个消息生产者,C1和C2为消息的消费者,他们之间为竞争关系,默认C1和C2之间的工作模式是轮询模式,例如P生产消息AA和BB,那么C1如果消费了消息AA,BB就会被C2所消费

在这里插入图片描述

消息生产者代码示例

public class Producer {

    public static final  String  QUEUE_NAME="hello_queue";

    public static void main(String[] args) throws IOException, TimeoutException {
        Channel channel = RabbitMqUtils.getChannel();
        /**
         * 生成队列
         * 1.队列名称
         * 2.队列是否持久化
         * 3.该队列是否只提供一个消费者进行消费
         * 4 是否自动删除,最后一个消费者开链接以后,该队列是否自动删除
         * 5.其他参数
         */
        channel.queueDeclare(QUEUE_NAME,false,false,false,null);
        // 开启了发布确认
        channel.confirmSelect();
        String message="hello word";
        
        Scanner scanner=new Scanner(System.in);
        while (scanner.hasNext()){
	        /**
	         * 发送一个消息
	         * 1.发送到那个交换机上
	         * 2.路由key
	         * 3.其他参数
	         * 4.发送消息的消息体
	         */
            channel.basicPublish("",QUEUE_NAME, null,(message+scanner.next()).getBytes());
        }
    }
}

消费者One代码示例

channel.basicQos(2)这一行代码主要是用来说明C1和C2是否进行轮询消费消息,如果设置的值是1就是不公平消费,谁处理的快就会给谁处理消息

public class ConsumerOne {

    public static void main(String[] args) throws IOException, TimeoutException {
        Channel channel = RabbitMqUtils.getChannel();

        // 消费者成功消费的回调
        DeliverCallback deliverCallback=(consumerTag, message)->{
            System.out.println("message = " + new String(message.getBody()));
            /**
             * 1.消息的标记 tag
             * 2.是否批量应答
             */
            channel.basicAck(message.getEnvelope().getDeliveryTag(),false);
        };

        CancelCallback cancelCallback=(consumerTag)->{
            System.out.println("消息消费被中断");
        };
        // 是否公平分发 1(不公平分发),默认是0(公平分发)
        channel.basicQos(0);

        /**
         * 消费者消费消息
         * 1.消费那个队列
         * 2.消费成功之后是否自动应答
         * 3.消费者成功消费的回调
         * 4.消费者取录消费的回调
         */
        channel.basicConsume(Producer.QUEUE_NAME,false,deliverCallback,cancelCallback);

    }
}

消费者Two代码示例

public class ConsumerTwo {

    public static void main(String[] args) throws IOException, TimeoutException {

        Channel channel = RabbitMqUtils.getChannel();
        // 是否公平分发 1(不公平分发),默认是0(公平分发)
        channel.basicQos(0);
        // 消费者成功消费的回调
        DeliverCallback deliverCallback=(consumerTag, message)->{
            System.out.println("message = " + new String(message.getBody()));
            /**
             * 1.消息的标记 tag
             * 2.是否批量应答
             */
            channel.basicAck(message.getEnvelope().getDeliveryTag(),false);
        };

        CancelCallback cancelCallback=(consumerTag)->{
            System.out.println("消息消费被中断");
        };


        /**
         * 消费者消费消息
         * 1.消费那个队列
         * 2.消费成功之后是否自动应答
         * 3.消费者成功消费的回调
         * 4.消费者取录消费的回调
         */
        channel.basicConsume(Producer.QUEUE_NAME,false,deliverCallback,cancelCallback);


    }
}

启动代码

在消息生产者中输入相关信息

在这里插入图片描述

消费者One

输出了两条BB,DD

在这里插入图片描述

消费者Two

输出流两条AA,CC

在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-25 12:16:45  更:2021-08-25 12:17:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 12:46:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码