RabbitMQ 模拟实现【六】:程序模拟实现

文章目录

  • 模拟实现
    • 模拟消费者
    • 模拟生产者
    • 效果展示
  • 启动结果如下: ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/71841546ad8043f1bd51e4408df791de.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f6e3e72ff9a4483c978ec48e24f075c2.png)

模拟实现

模拟消费者

package com.example.demo.demo;import com.example.demo.common.Consumer;
import com.example.demo.common.MqException;
import com.example.demo.mqclient.Channel;
import com.example.demo.mqclient.Connection;
import com.example.demo.mqclient.ConnectionFactory;
import com.example.demo.mqsever.core.BasicProperties;
import com.example.demo.mqsever.core.ExchangeType;import java.io.IOException;/** 这个类表示一个消费者.* 通常这个类也应该是在一个独立的服务器中被执行*/
public class DemoConsumer {public static void main(String[] args) throws IOException, MqException, 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);channel.basicConsume("testQueue", true, new Consumer() {@Overridepublic void handleDelivery(String consumerTag, BasicProperties basicProperties, byte[] body) throws MqException, IOException {System.out.println("[消费数据] 开始!");System.out.println("consumerTag=" + consumerTag);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);}}
}

模拟生产者

package com.example.demo.demo;import com.example.demo.mqclient.Channel;
import com.example.demo.mqclient.Connection;
import com.example.demo.mqclient.ConnectionFactory;
import com.example.demo.mqsever.core.ExchangeType;import java.io.IOException;/** 这个类用来表示一个生产者.* 通常这是一个单独的服务器程序.*/
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();}
}

效果展示

启动结果如下:
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/746560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OceanBase原理之内存管理

第1章 前言 1.1 多租户管理简介 OceanBase数据库中,应用了单集群多租户的设计,使得一个集群内能够创建多个彼此独立的租户。在OceanBase数据库,租户成为了资源分配的单位,同时还是数据库对象管理和资源管理的基础。 在某种程度…

桌面备忘录,电脑桌面备忘录怎么设置

在当今快节奏的生活中,备忘录成为了人们工作和生活中不可或缺的工具。然而,随着科技的发展,纸质备忘录逐渐被电子桌面备忘录所取代。在电脑桌面设置备忘录,可以更加高效地管理任务和提醒事项。 电脑桌面是我们日常工作和娱乐的主…

2024年语言艺术、人文发展与教育国际会议(ICLAHDE2024)

2024年文学、历史与艺术设计国际会议(ICLHAD2024) 一、【会议简介】 2024年国际语言艺术、人文发展与教育会议(ICLAHDE2024)将在中国昆明举行,主题为“语言、人文与艺术”。ICLAHDE汇集了来自世界各地语言艺术、人类发展和教育领域的学者、工…

UE5C++学习(二)--- 角色简单连击

本文记录一下一个简单的角色基础连招。 它的做法就是:我们鼠标左键连续按下,会有一个动画蒙太奇索引去计数,获取到对应的蒙太奇动画数组中指定下标的攻击蒙太奇动画,然后进行播放;在播放的过程中用StartAttack()骨骼通…

刚刚拿到某安全公司「代码审计岗位」面试题

刚刚拿到,某安全公司「代码审计岗位」的面试题,让小编瞬间感到一股紧张又兴奋的情绪涌上心头。 代码审计,这个在信息安全领域里举足轻重的岗位,它要求的不仅仅是过硬的技术实力,更需要对细节敏锐的洞察力和对安全漏洞…

常见的软件系统性能测试指标

常见的软件系统性能测试指标 衡量一个软件系统性能的好坏,在性能测试中会使用一些性能指标来进行分析和描述,以下是一些最常用的性能指标。 1.2.1 响应时间 请求或者某个操作从发出的时间到收到服务器响应的时间的差值就是响应时间。在性能测试中&am…

微信小程序--开启下拉刷新页面

1、下拉刷新获取数据enablePullDownRefresh 开启下拉刷新: enablePullDownRefreshbooleanfalse是否开启当前页面下拉刷新 案例: 下拉刷新,获取新的列表数据,其实就是进行一次新的网络请求: 第一步:在.json文件中开…

AI程序员Devin会在6个方面影响人类程序员

讲动人的故事,写懂人的代码 初创公司Cognition最近所发布的世界上首个AI程序员Devin,让人类程序员百感交集。因为Devin能自动干下面的事情: 自己学习不熟悉的技术; 端到端地自己搭建和部署应用程序; 自己找出并修复…

如何根据主机监听端口号查找到对应docker容器

如何根据主机监听端口号查找到对应docker容器 问题描述 使用了一个端口是31883,这是个mq的端口号,但是怎么都找不到是哪个docker容器启用的 问题尝试解决 使用命令lsof -i:31883 如图 然后接着使用 ps -ef|grep 1128796,如图根本查不出来任…

扩展资料主机名到IP地址的有两种方式:DNS

中国联通的DNS地址有两种。 主 DNS 为“210.21.4.130”,备用 DNS 为“221.5.88.88”。 每个 IP 地址可以有一个主机名。 主机名由一串或多串字符组成。 用小数点分隔字符串。 对于中国联通宽带用户,主DNS设置为:210.21.4.130,备用…

c++ 面试100个题目中的编程题目

88、下列程序的运行结果是? #include <stdlib.h> #include <stdio.h> #include <string.h> #include <iostream> const char* str = "vermeer"; using namespace std; int main(){ const char* pstr = str;cout << "The add…

Devin横空出世,历史第一位人工智能软件工程师

大男主爽文的一刻&#xff0c;AI领域最近横空出世的Devin问世&#xff0c;可谓一石激起千层浪&#xff0c;让我们看这个创造出AI软件工程师的产品公司背景如何 2024年3月13日&#xff0c;Cognition AI在 X 上推出了全球首个AI软件工程师Devin&#xff0c;请记住这个名字。它在英…

光伏行业如何起步?光伏业务管理软件是重点!

随着全球对可再生能源的需求日益增强&#xff0c;光伏行业作为其中的佼佼者&#xff0c;正迎来前所未有的发展机遇。然而&#xff0c;如何在这一领域成功起步&#xff0c;却是许多企业和个人面临的挑战。在这个过程中&#xff0c;光伏业务管理软件的重要性不容忽视。 光伏行业的…

HarmonyOS NEXT应用开发—使用弹簧曲线实现抖动动画及手机振动效果案例

介绍 本示例介绍使用vibrator.startVibration方法实现手机振动效果&#xff0c;用animateTo显示动画实现点击后的抖动动画。 效果图预览 使用说明 加载完成后显示登录界面&#xff0c;未勾选协议时点击一键登录按钮会触发手机振动效果和提示文本的抖动动画。 实现思路 创建…

计算机组成原理练习-计算机工作过程

高级语言与机器语言之间的转换 ------------------------------------------------------------------------------------------------------------------------------- 1.将高级语言源程序转换为机器级目标代码文件的程序是&#xff08;&#xff09;。 A.汇编程序 …

【HyperLips:】数字人——控制嘴唇 项目源码python实现

最近受到商汤“复活”汤晓鸥的视频刺激&#xff0c;大大的amazing&#xff01;没看过的小伙伴可以自行百度&#xff0c;看了不研究一下【数字人】技术&#xff0c;都要跟时代脱轨了&#xff0c;那就以HyperLips为开篇吧。 目录 &#x1f34e;&#x1f34e;1.摘要 &#x1f3…

浅谈C/C++的new和delete以及对象池的实现

今天我们来谈谈C中的new和delete&#x1f60a;&#x1f60a;&#x1f60a;。在软件开发中,常常需要动态地分配和撤销内存空间&#xff0c;C语言中利用库函数malloc和free分配和撤销内存空间的。而在C中则是 new和delete malloc函数时必须指定需要开辟的内存空间的大小&#xf…

【vue baidu-map】实现百度地图展示基地,鼠标悬浮标注点展示详细信息

实现效果如下&#xff1a; 自用代码记录 <template><div class"map" style"position: relative;"><baidu-mapid"bjmap":scroll-wheel-zoom"true":auto-resize"true"ready"handler"><bm-mar…

为何虎茅掌柜 短短6个月会员近百万 月销售额破亿!

大家好 我是吴军 一家软件开发公司的产品经理 今天我们来分析一下&#xff0c;一个卖酒的模式 为什么这家平台短短6个月&#xff0c;发展百万名用户&#xff0c;月销售额破亿! 虎茅掌柜&#xff0c;切记这个虎茅和茅台的那个没有任何关系 虎茅掌柜 虎茅掌柜实质上是一种…

Spring Bean的生命周期流程

前言 Java 中的公共类称之为Java Bean&#xff0c;而 Spring 中的 Bean 指的是将对象的生命周期&#xff0c;交给Spring IoC 容器来管理的对象。所以 Spring 中的 Bean 对象在使用时&#xff0c;无需通过 new 来创建对象&#xff0c;只需要通过 DI&#xff08;依赖注入&#x…