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

目录

一、引言

二、生产者

三、消费者

四、扩展

五、总结


一、引言

本篇文章就是本次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() {
            @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);
        }
    }
}

三、消费者

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 - 码云 - 开源中国,感谢观看!

相关推荐
qq_124987075315 小时前
基于微信小程序的电子元器件商城(源码+论文+部署+安装)
java·spring boot·spring·微信小程序·小程序·毕业设计
吃喝不愁霸王餐APP开发者15 小时前
基于Spring Cloud Gateway实现对外卖API请求的统一鉴权与流量染色
java·开发语言
a努力。15 小时前
美团Java面试被问:Redis集群模式的工作原理
java·redis·后端·面试
一雨方知深秋15 小时前
面向对象编程
java·封装·this·构造器·static关键字·成员变量·javabean实体类
资生算法程序员_畅想家_剑魔15 小时前
Java常见技术分享-11-责任链模式
java·spring boot·责任链模式
计算机程序设计小李同学15 小时前
动漫之家系统设计与实现
java·spring boot·后端·web安全
程序员阿鹏16 小时前
责任链模式
java·spring·servlet·tomcat·maven·责任链模式
云和数据.ChenGuang16 小时前
Logstash配置文件的**语法解析错误**
运维·数据库·分布式·rabbitmq·jenkins
@淡 定16 小时前
Java内存模型(JMM)详解
java·开发语言
czhc114007566316 小时前
C# 1221
java·servlet·c#