首页 > 其他分享 >操作003:工作队列模式

操作003:工作队列模式

时间:2024-12-23 17:29:11浏览次数:10  
标签:String 队列 rabbitmq 003 模式 import com public channel

文章目录

操作003:工作队列模式

一、生产者代码

1、封装工具类

package com.atguigu.rabbitmq.util;  
  
import com.rabbitmq.client.Connection;  
import com.rabbitmq.client.ConnectionFactory;  
  
public class ConnectionUtil {  
  
    public static final String HOST_ADDRESS = "192.168.200.100";  
  
    public static Connection getConnection() throws Exception {  
  
        // 定义连接工厂  
        ConnectionFactory factory = new ConnectionFactory();  
  
        // 设置服务地址  
        factory.setHost(HOST_ADDRESS);  
  
        // 端口  
        factory.setPort(5672);  
  
        //设置账号信息,用户名、密码、vhost  
        factory.setVirtualHost("/");  
        factory.setUsername("guest");  
        factory.setPassword("123456");  
  
        // 通过工程获取连接  
        Connection connection = factory.newConnection();  
  
        return connection;  
    }  
  
  
  
    public static void main(String[] args) throws Exception {  
  
        Connection con = ConnectionUtil.getConnection();  
  
        // amqp://guest@192.168.200.100:5672/  
        System.out.println(con);  
  
        con.close();  
  
    }  
  
}

2、编写代码

package com.atguigu.rabbitmq.work;  
  
import com.atguigu.rabbitmq.util.ConnectionUtil;  
import com.rabbitmq.client.Channel;  
import com.rabbitmq.client.Connection;  
  
public class Producer {  
  
    public static final String QUEUE_NAME = "work_queue";  
  
    public static void main(String[] args) throws Exception {  
  
        Connection connection = ConnectionUtil.getConnection();  
  
        Channel channel = connection.createChannel();  
  
        channel.queueDeclare(QUEUE_NAME,true,false,false,null);  
  
        for (int i = 1; i <= 10; i++) {  
  
            String body = i+"hello rabbitmq~~~";  
  
            channel.basicPublish("",QUEUE_NAME,null,body.getBytes());  
  
        }  
  
        channel.close();  
  
        connection.close();  
  
    }  
  
}

3、发送消息效果

在这里插入图片描述

二、消费者代码

1、编写代码

创建Consumer1和Consumer2。Consumer2只是类名和打印提示不同,代码完全一样。

package com.atguigu.rabbitmq.work;  
  
import com.atguigu.rabbitmq.util.ConnectionUtil;  
import com.rabbitmq.client.*;  
  
import java.io.IOException;  
  
public class Consumer1 {  
  
    static final String QUEUE_NAME = "work_queue";  
  
    public static void main(String[] args) throws Exception {  
  
        Connection connection = ConnectionUtil.getConnection();  
  
        Channel channel = connection.createChannel();  
  
        channel.queueDeclare(QUEUE_NAME,true,false,false,null);  
  
        Consumer consumer = new DefaultConsumer(channel){  
  
            @Override  
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {  
  
                System.out.println("Consumer1 body:"+new String(body));  
  
            }  
  
        };  
  
        channel.basicConsume(QUEUE_NAME,true,consumer);  
  
    }  
  
}

注意:运行的时候先启动两个消费端程序,然后再启动生产者端程序。

如果已经运行过生产者程序,则手动把work_queue队列删掉。

2、运行效果

最终两个消费端程序竞争结果如下:


在这里插入图片描述

标签:String,队列,rabbitmq,003,模式,import,com,public,channel
From: https://blog.csdn.net/qq_21880261/article/details/144673492

相关文章

  • 内网离线模式下激活JRebel
    1.在线模式激活jrebel网上教程很多,随便找到一篇:https://blog.csdn.net/senge_com/article/details/136472160ReverseProxy_windows_amd64副本下载地址:https://files.cnblogs.com/files/huanghongbo/ReverseProxy_windows_amd64.zip?t=1734945182&download=true 2.离线模式激......
  • 中考阅读理解深入逻辑分析-003 The Confidence Test 信心测试
    文章正文Mr.Smithstoodbeforehisclassof30studentsandwasgoingtohandoutthefinalexampapers."Iknowhowhardyouhaveallworkedtogetreadyforthistest,"hesaid."AndbecauseIknowyouareallabletounderstandthesequesti......
  • 卷轴模式商城平台系统开发实例之总体概述(第一章)
    卷轴模式系统是一种商业模式软件,他基于会员分销,电商系统,OTC积分交易,激励视频广告任务,分润价值体系,任务包梯度,减产和加速机制构成的一套综合性电商平台。卷轴任务包是指平台会员通过完成任务来获取积分,从而获得更多积分收益的一种模式。新注册用户在平台上会得到一定数量的积......
  • 设计模式-备忘录模式
    背景游戏角色恢复问题:角色有攻击力和防御力,在Boss站前保存攻击力和防御力,大战之后,攻击力和防御力下降,从备忘录恢复到大战前的状态。传统思路:一个游戏对象,对应一个保存状态对象。当对象很多时不利于管理,开销也很大。基本介绍在不破坏封装性的前提下,捕获一个对象的内部状态......
  • DL00358-基于YOLOv8的停车空位检测代码含数据集
    YOLOv8(YouOnlyLookOnceVersion8)是基于深度学习的目标检测算法,近年来在图像处理领域取得了显著进展,尤其在实时目标检测任务中表现出色。停车空位检测作为计算机视觉应用中的一个重要研究方向,旨在通过智能化系统识别和判断停车场内的空闲车位,为车主提供实时的停车信息,提升停车......
  • Sigrity Power SI 3D-EM Full Wave Extraction模式如何仿真分析玻纤效应操作指导
    SigrityPowerSI3D-EMFullWaveExtraction模式如何仿真分析玻纤效应操作指导SigrityPowerSI3D-EMFullWaveExtraction模式可以进行玻纤效应仿真分析,但是会占用非常大的计算内存,具体操作如下以为demo_SIM-L4.spd例进行操作说明2D视图......
  • Sigrity System SI Parallel Bus Analysis模式进行DDR3 FlyBy拓扑地址组仿真分析-4个
    SigritySystemSIParallelBusAnalysis模式进行DDR3FlyBy拓扑地址组仿真分析-4个颗粒SigritySystemSIParallelBusAnalysis模式提供了简易的已搭建好的模板,方便用户直接在模板上替换数据文件进行仿真分析,下面介绍addr_bus_sparam_4mem模板的使用,是一个4颗粒的Fly-By......
  • 计算机电源管理模式详解:从待机到休眠的五种状态
    计算机电源管理模式详解:从待机到休眠的五种状态计算机状态S1Standby。即指说系统处于低电源供应状态,在windowsorBIOS中可设定屏幕信号输出关闭、硬盘停止运转进入待机状态、电源灯处于闪烁状态。此时动一动鼠标、按键盘任一键均可叫醒电脑。S2PowerStandby。......
  • js语句放入异步队列的时机是哪个?
    在JavaScript中,异步操作是通过事件循环(EventLoop)和异步队列(也称任务队列或消息队列)来处理的。当一个异步操作(如setTimeout、setInterval、Promise、async/await等)被调用时,它的回调函数或执行逻辑并不会立即执行,而是会被放入异步队列中等待。以下是这些异步操作如何与异步队列交......
  • Python 设计模式入门指南:23 种设计模式轻松学
    Python设计模式入门指南:23种设计模式轻松学第一部分:创建型模式(5种)1.工厂方法模式2.抽象工厂模式3.单例模式4.建造者模式5.原型模式第二部分:结构型模式(7种)1.适配器模式2.装饰器模式3.代理模式4.外观模式5.桥接模式6.组合模式7.享元......