Java项目--仿RabbitMQ的消息队列--基于MQ的生产者消费者模型

news/2024/12/25 9:03:21/

目录

一、引言

二、生产者

三、消费者

四、扩展

五、总结 


一、引言

  本篇文章就是本次Java项目的最后一篇文章了,本篇文章主要介绍基于MQ的生产者消费者模型的代码编写

二、生产者

java">public class DemoConsumer {public static void main(String[] args) throws IOException, InterruptedException, MqException {System.out.println("启动消费者!");ConnectionFactory factory = new ConnectionFactory();factory.setHost("127.0.0.1");factory.setPort(9090);Connection connection = factory.newConnection();Channel channel = connection.createChannel();channel.exchangeDeclare("testExchange", ExchangeType.DIRECT,true,false,null);channel.queueDeclare("testQueue",true,false,false,null);channel.basicConsume("testQueue", true, new Consumer() {@Overridepublic void handleDelivery(String consumeTag, BasicProperties basicProperties, byte[] body) throws MqException, IOException {System.out.println("[消费数据]开始!");System.out.println("consumerTag="+consumeTag);System.out.println("basicProperties="+basicProperties);String bodyString = new String(body,0, body.length);System.out.println("body="+bodyString);System.out.println("[消费数据]结束!");}});while (true){Thread.sleep(500);}}
}

三、消费者

java">public class DemoProducer {public static void main(String[] args) throws IOException, InterruptedException {System.out.println("启动生产者!");ConnectionFactory factory = new ConnectionFactory();factory.setHost("127.0.0.1");factory.setPort(9090);Connection connection = factory.newConnection();Channel channel = connection.createChannel();channel.exchangeDeclare("testExchange", ExchangeType.DIRECT,true,false,null);channel.queueDeclare("testQueue",true,false,false,null);byte[] body = "hello".getBytes();boolean ok = channel.basicPublish("testExchange","testQueue",null,body);System.out.println("消息投递完成!ok="+ok);Thread.sleep(500);channel.close();connection.close();}
}

四、扩展

五、总结 

  本次Java项目“模拟消息队列”就全部完成了,感兴趣的小伙伴可以主机敲一遍代码以及实现上述的拓展API,全部代码我已上传到gitee:spring-mq · 别像我这么帅/Javacode - 码云 - 开源中国,感谢观看!


http://www.ppmy.cn/news/1557950.html

相关文章

物联网网络中的设备认证方法

论文标题:DEVICE AUTHENTICATION METHOD IN INTERNET OF THINGS NETWORKS(物联网网络中的设备认证方法) 作者信息: A.Ya. Davletova,West Ukrainian National University, 11, Lvivska Str. Ternopil, 46009, Ukraine…

C# WPF开发

WPF基础 WPF开发主要学习使用控件来布局,利用各种样式包装丰富控件,然后通过使用模板来达到预期的布局显示效果,还可以使用常见的MVVM框架来实现前后端互联。 布局: 主要掌握常用的布局方式,Grid,StackPanel、WrapPanel.根据内容分割行列、…

UDP基本了解

UDP基本了解 TCP、UDP区别 TCP(Transfer Control Protocol) UDP(User Datagram Protocol ) 连接:TCP是面向连接的传输协议,传输数据前需要先建立连接。而UDP不需要连接,即刻传输数据 服务对象…

第20天:JS信息收集-Web应用JS架构URL提取数据匹配Fuzz接口WebPack分析自动化

#知识点 1、信息收集-Web应用-JS提取分析-人工&插件*项目 2、信息收集-Web应用-JS提取分析-URL&配置&逻辑 标签 名称 地址 FUZZ测试 ffuf GitHub - ffuf/ffuf: Fast web fuzzer written in Go 匹配插件(bp) Hae GitHub - gh0stkey/HaE: HaE - H…

蓝桥杯刷题——day8

蓝桥杯刷题——day8 题目一题干解题思路代码 题目二题干解题思路代码 题目一 题干 N 架飞机准备降落到某个只有一条跑道的机场。其中第i架飞机在 Ti时刻到达机场上空,到达时它的剩余油料还可以继续盘旋 Di个单位时间,即它最早可以于 Ti时刻开始降落&am…

如何使用 Python 连接 SQLite 数据库?

SQLite是一种轻量级的嵌入式数据库,广泛应用于各种应用程序中。 Python提供了内置的sqlite3模块,使得连接和操作SQLite数据库变得非常简单。 下面我将详细介绍如何使用sqlite3模块来连接SQLite数据库,并提供一些实际开发中的建议和注意事项…

Java重要面试名词整理(一):MySQLJVMTomcat

文章目录 MySQL篇联合索引最左前缀法则索引下推并发事务处理带来的问题事务隔离级别Read Uncommitted(读取未提交内容)Read Committed(读取提交内容 RC)Repeatable Read(可重读 RR)Serializable&#xff08…

单片机:实现数码管动态显示(0~99999999)74hc138驱动(附带源码)

单片机实现数码管动态显示(0~99999999)并使用74HC138驱动 在本项目中,我们将介绍如何在单片机上实现一个八位数码管(显示0到99999999)的动态显示,并使用74HC138解码器来控制数码管的选择。74HC138是一种常…