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

相关推荐
亮11111 分钟前
GITLAB跑gradle项目 不借助maven-publish直接上传到nexus私人仓库
java·gitlab·gradle·maven
薯条不要番茄酱19 分钟前
【SpringBoot】从零开始全面解析Spring MVC (一)
java·spring boot·后端
翻滚吧键盘20 分钟前
idea中ctrl+/注释,总是出现在最前行
java·ide·intellij-idea
意倾城22 分钟前
JVM 如何优化 31 * x 为 (x << 5) - x?
java·jvm
醉殇姒若梦遗年2 小时前
怎么用idea打jar包
java·intellij-idea·jar
林九生2 小时前
【Docker】Docker环境下快速部署Ollama与Open-WebUI:详细指南
java·docker·eureka
Aric_Jones3 小时前
lua入门语法,包含安装,注释,变量,循环等
java·开发语言·git·elasticsearch·junit·lua
Akiiiira3 小时前
【日撸 Java 三百行】Day 12(顺序表(二))
java·开发语言
Chase_Mos7 小时前
Spring 必会之微服务篇(1)
java·spring·微服务
小林学习编程9 小时前
SpringBoot校园失物招领信息平台
java·spring boot·后端