当前位置: 首页 > article >正文

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

目录

一、引言

二、生产者

三、消费者

四、扩展

五、总结 


一、引言

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

二、生产者

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() {
            @Override
            public 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);
        }
    }
}

三、消费者

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.kler.cn/a/448917.html

相关文章:

  • idea2024创建JavaWeb项目以及配置Tomcat详解
  • 百度热力图数据处理,可直接用于论文
  • 【信号滤波 (上)】傅里叶变换和滤波算法去除ADC采样中的噪声(Matlab/C++)
  • GitCode 光引计划投稿|JavaVision:引领全能视觉智能识别新纪元
  • WPF自定义窗口 输入验证不生效
  • C++ 面向对象编程:+号运算符重载,左移运算符重载
  • elasticache备份
  • Debian 12.0 上为 Nginx 配置 SSL/TLS 证书
  • Vue:父页面调用子页面方法等待完成
  • Zabbix告警通知部署方案详解
  • ELM分类-单隐藏层前馈神经网络(Single Hidden Layer Feedforward Neural Network, SLFN)
  • 12寸半导体厂等保安全的设计思路
  • Transfomer的各层矩阵
  • Spring Boot开发编译后读取不到@spring.profiles.active@的问题
  • MySQL的分析查询语句
  • 网络刷卡器的功能和使用场景
  • 无人机森林草原播种施肥植物恢复技术详解
  • Wireshark(1)
  • 【Python使用】嘿马头条项目从到完整开发教程第9篇:缓存,1 缓存穿透【附代码文档】
  • 初试Docker
  • 【openwrt】openwrt NAT64 NAT46实现简介
  • 【计算机视觉】opencv-停车位检测原理及代码演示
  • 摆脱 `div`!7 种更语义化的 HTML 标签替代方案
  • voxelize_cuda安装 笔记
  • 【新教程】Ubuntu server 24.04配置无线网WiFi
  • 【BaseFunctions】- KRTS C++示例精讲(1)