rabbitmq环境安装&java调用小例子

简介: 该文档针对rabbitmq进行了相关搭建工作以及相关文档的摘录包括java连接mq进行消息发送、消息监听并消费的内容

第一章 前言


1.1 文档总体介绍


 该文档针对rabbitmq进行了相关搭建工作以及相关文档的摘录包括java连接mq进行消息发送、消息监听并消费的内容


1.2 使用范围


 使用初学者搭建简单环节,进行java简单的测试使用


1.3 作用


通过这个文档让之前的经历得到总结升华,让以后再做这件事的时候可以更加迅速,另外也可以让自己在以后的角度去看待搭建简单环节以及进行测试工作,并为自己以后更深入的研究做铺垫。


第二章 环境搭建


注:相关安装包读者可到rabbitMQ官网自行下载,官网地址如下:http://www.rabbitmq.com/news.html#2018-07-05T17:00:00+00:00


1.1 安装erlang


将下载包放到相关位置,执行命令如下:


tar -xvf otp_src_19.1.tar.gz


到解压的包中执行如下命令:


yum -y install ncurses-devel
./configure
make install


检查是否启动成功,命令以及正确结果如下图:erl –version


1.2 安装rabbitmq


安装:将压缩包解压即可  tar –xvf rabbitmq-server-generic-unix-3.5.8.tar.gz


启动:cd到sbin目录执行:./rabbitmq-server start


后台启动:./rabbitmq-server–detached


停止:./rabbitmqctl stop


1.3 安装管理控制台并设置外部访问权限


启动web管理界面


rabbitmq-plugins enablerabbitmq-management


增加访问用户,默认用户guest只能本地访问。


rabbitmqctl add_user admin admin


设置角色:


rabbitmqctl set_user_tags adminadministrator


设置默认vhost(“/”)访问权限


rabbitmqctl set_permissions -p “/” admin“.” “.” “.*”


浏览器访问:http://IP:15672


用户名admin,密码admin进行登录


第三章 java例子实战


1.1 java发送小例子


    public static void main(String[] args) {
        try{
            //创建连接工厂
            ConnectionFactory factory = new ConnectionFactory();
            //设置RabbitMQ相关信息
            factory.setHost("192.168.37.144");
            factory.setUsername("admin");
            factory.setPassword("admin");
            factory.setPort(5672);
            //创建一个新的连接
            Connection connection = factory.newConnection();
            //创建一个通道
            Channel channel = connection.createChannel();
            // 声明一个队列
//           channel.queueDeclare("aaatext", false, false, false, null);
            //发送消息到队列中
            String message = "Hello RabbitMQ";
            channel.basicPublish("aaatext", "aaatext", null, message.getBytes("UTF-8"));
            System.out.println("Producer Send +'" + message + "'");
            //关闭通道和连接
            channel.close();
            connection.close();
        }catch (Exceptione){
            e.printStackTrace();
        }
    }


1.2 java监控消息并消费小例子


private void init() {
    try{
        //mq用户名
        String mqUserName = globalService.getConfigValue(Global.MQUSERNAME);
        //mq密码
        String mqPassword = globalService.getConfigValue(Global.MQPASSWORD);
        //mqip
        String mqHost = globalService.getConfigValue(Global.MQHOST);
        //mq端口号
        int mqPort = Integer.valueOf(globalService.getConfigValue(Global.MQPORT));
        //回调消费
        String mqBackSendRoute = globalService.getConfigValue(Global.MQBACKSENDROUTE);
        AddRabbitMqUtil.getMsg(mqUserName,mqPassword,mqHost,mqPort,mqBackSendRoute);
    }catch (Exceptione){
        e.printStackTrace();
    }
}


public static void getMsg(String mqUserName,StringmqPassword,String mqHost,int mqPort, String mqBackSendRoute)throws Exception{
    Connection conn = createConnection(mqUserName,mqPassword, mqHost, mqPort);
    Channel channel = createChannel(conn);
    QueueingConsumer consumer = new QueueingConsumer(channel);
    channel.basicConsume(mqBackSendRoute,true, consumer);
    while (true) {
        QueueingConsumer.Deliverydelivery = consumer.nextDelivery();
        String message = new String(delivery.getBody());
        System.out.println("收到消息'"+ message + "'");
        //调用外部接口向上层应用推送转后的素材信息
    }
}


第四章:遇到的坑


1.1 mq和erlang版本不统一导致的问题:报错信息:


Warning: Mochiweb enabled and Erlangversion 18 detected.


Enabling plugins that depend on Mochiweb is not supported on this Erlang


version. At least R13B01 is required.


RabbitMQ will not start successfully in this configuration. You *must*


disable the Mochiweb plugin, or upgrade Erlang.


原因:开始我mq用的是rabbitmq-server-generic-unix-2.7.0.tar.gz


erlang用的是:otp_src_R16B02.tar.gz


导致版本不一致报了上面的错误,后来将mq修改为:rabbitmq-server-generic-unix-3.5.8.tar.gz   以上问题解决。


1.2消息发送没报错,但是mq没接收到消息


 原因:由于服务器存储占满导致通过java代码发送的消息没有被mq接收,但是发送过程中并没有出现异常情况;另外通过mq控制台模拟发送消息是可以的。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
26天前
|
消息中间件 存储 Java
RocketMQ文件刷盘机制深度解析与Java模拟实现
【11月更文挑战第22天】在现代分布式系统中,消息队列(Message Queue, MQ)作为一种重要的中间件,扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件,广泛应用于实时数据流处理、日志流处理等场景。为了保证消息的可靠性,RocketMQ引入了一种称为“刷盘”的机制,将消息从内存写入到磁盘中,确保消息持久化。本文将从底层原理、业务场景、概念、功能点等方面深入解析RocketMQ的文件刷盘机制,并使用Java模拟实现类似的功能。
40 3
|
2月前
|
存储 消息中间件 安全
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
【10月更文挑战第9天】本文介绍了如何利用JUC组件实现Java服务与硬件通过MQTT的同步通信(RRPC)。通过模拟MQTT通信流程,使用`LinkedBlockingQueue`作为消息队列,详细讲解了消息发送、接收及响应的同步处理机制,包括任务超时处理和内存泄漏的预防措施。文中还提供了具体的类设计和方法实现,帮助理解同步通信的内部工作原理。
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
|
2月前
|
消息中间件 存储 JSON
rabbitmq基础教程(ui,java,springamqp)
本文提供了RabbitMQ的基础教程,包括如何使用UI创建队列和交换机、Java代码操作RabbitMQ、Spring AMQP进行消息发送和接收,以及如何使用不同的交换机类型(fanout、direct、topic)进行消息路由。
32 0
rabbitmq基础教程(ui,java,springamqp)
|
2月前
|
消息中间件 前端开发 Java
java高并发场景RabbitMQ的使用
java高并发场景RabbitMQ的使用
113 0
|
3月前
|
消息中间件 缓存 Java
RocketMQ的JAVA落地实战
RocketMQ作为一款高性能、高可靠、高实时、分布式特点的消息中间件,其核心作用主要体现在异步处理、削峰填谷以及系统解耦三个方面。
185 0
|
4月前
|
Java
MQTT(EMQX) - Java 调用 MQTT Demo 代码
MQTT(EMQX) - Java 调用 MQTT Demo 代码
180 0
MQTT(EMQX) - Java 调用 MQTT Demo 代码
|
5月前
|
消息中间件 Java Maven
如何在Java中使用RabbitMQ
如何在Java中使用RabbitMQ
|
6月前
|
消息中间件 Java
Java一分钟之-RabbitMQ:AMQP协议实现
【6月更文挑战第11天】RabbitMQ是基于AMQP协议的开源消息队列服务,支持多种消息模式。本文介绍了RabbitMQ的核心概念:生产者、消费者、交换器、队列和绑定,以及常见问题和解决方案。例如,通过设置消息持久化和确认机制防止消息丢失,配置死信队列处理不可消费消息,以及妥善管理资源防止泄漏。还提供了Java代码示例,帮助读者理解和使用RabbitMQ。通过理解这些基础和最佳实践,可以提升RabbitMQ在分布式系统中的可靠性和效率。
140 0
Java一分钟之-RabbitMQ:AMQP协议实现
|
5月前
|
消息中间件 负载均衡 Java
JAVA面试之MQ
JAVA面试之MQ
73 0
|
5月前
|
消息中间件 Java Maven
如何在Java中使用RabbitMQ
如何在Java中使用RabbitMQ