RabbitMQ的安装及简单使用

                              RabbitMQ 安装(linux):

1.安装Erlang-----------------------------------------

RabbitMQ是基于erlang语言进行开发的,所以安装RabbitMQ之前需要先安装erlang语言

    1.1安装erlang前先安装Linux依赖库:-------------------

    [if !supportLists]1. [endif]yum -y install make gcc gcc-c++ kernel-devel     m4 ncurses-devel openssl-devel

    1.2 解压erlang压缩包文件:-------------------

           tar -zxvf otp_src_21.2.tar.gz -C /usr/local

    1.3配置-------------------

  (需要切换到解压目录下进行操作cd otp_src_21.2)

    然后输入./configure

    然后回车(进行配置的时候需要一定的时间)

    1.4编译-------------------

  (执行的时候需要一定的时间)

    配置完成之后直接输入命令:make

    1.5安装-------------------

    (执行的时候需要一定的时间)

    编译完成之后直接输入命令:make install

    1.6删除安装包-------------------

  (可以执行也可以不执行)

    rm -rf otp_src_21.2

    1.7验证erlang是否安装成功-------------------

          在命令行输入:erl如果进入了编程命令行则             表示安装成功,

          然后按ctrl + z 退出编程命令行;

2.安装RabbtiMQ-----------------------------------------

    2.1解压RabbitMQ的压缩包:-------------------

    tar -xvf rabbitmq-server-generic-unix-3.8.0.tar.xz  -C /usr/local/

    .tar.xz文件解压后就可以使用了,无需再编译安装;

    切换到安装目录的sbin目录下:-------------------

    2.2.启动RabbitMQ----------------------

     ./rabbitmq-server -detached

     -detached表示后台启动

     如果后台启动的时候报错:

     解决方案:

     进入

     vim /etc/hosts(添加一行映射 映射当前服务器的ip地址与当前的主机host        名字)

     注意:为什么这里写的ip地址是192.168.65.131

     因为当前rabbitmq需要在这台服务器上使用

     为什么空格后面对应的内容写zookeeper

     因为当前这台服务器的hostname配置是zookeeper

     如何查看当前服务器的hostname的配置

     使用命令 cat /etc/hostname

     2.3启动后台web管理功能(需要切换到sbin目录下执行)-------

         ./rabbitmq-plugins enable rabbitmq_management

       然后通过http://192.168.65.131:15672访问默认

       用户guest、密码 guest,

        登录会提示User can only log in via localhost

        这里提示guest用户只能在本地登录,这个时候我们远程访问需要自己添          加用户和相应的权限。

        添加用户:./rabbitmqctl add_user admin admin

        这句话的意思是添加一个用户 账号是admin 密码是admin

        添加权限:./rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

        这句的意思是给所有的虚拟机主机添加所有的权限

        修改用户角色:./rabbitmqctl set_user_tags admin administrator

        这句话的意思是给admin添加一个标签 标签是administrator

        然后使用admin进行登录即可:

        2.4关闭rabbitmq服务器(切换到sbin目录下执行):-------------------

          ./rabbitmqctl shutdown

        2.5关闭后台web管理功能 :-------------------

        ./rabbitmq-plugins disable rabbitmq_management


RabbitMQ部分内容参考了: https://www.sojson.com/blog/48.html

---------------------------------------------------------------------------------

                        RabbitMQ提供方上传消息流程

1.启动后台web管理功能(需要切换到sbin目录下执行)-------------------

./rabbitmq-plugins enable rabbitmq_management

2.在需要使用RabbitMQ的API项目中导入依赖----------------------

<dependency>

<groupId>com.rabbitmq</groupId>

<artifactId>amqp-client</artifactId>

<version>5.8.0</version>

</dependency>

3.创建连接工厂---------------------------------------------------

 ConnectionFactory connectionFactory = new ConnectionFactory();

4.设置RabbitMQ安装的服务器的地址--------------------------------

connectionFactory.setHost("192.168.80.3");

5.设置RabbitMQ的端口号----------------------------------------

connectionFactory.setPort(5672);

6.设置登录用户和密码---------------------------------------

connectionFactory.setUsername("admin");          

 connectionFactory.setPassword("admin");

7.设置指定虚拟机:/为默认-----------------------------------

        connectionFactory.setVirtualHost("/");

8.创建与RabbitMQ服务的TCP链接-----------------------------

  connection = connectionFactory.newConnection();

9.创建于Exchange的通道,每个连接可以创建多个通道,每个通道代表一个会话任务----------------------------------------------------------

 channel = connection.createChannel();

10./*----------------------------------------------------------

    * 声明队列:如果RabbitMQ中没有此队列将自动创建

    * param1:队列的名称

    * param2:是否持久化(rabbit重启后,该队列是否还存在)

    * param3:队列是否独占此链接(其他队列不能使用此链接)

    * param4:队列不再使用时是否自动删除此队列

    * param5:队列参数(通常不需要)

    * */

            channel.queueDeclare("zhengxixi",true,false,false,null);

   11.编写要输送的消息------------------------------------------

            String data ="来自提供方的郑茜茜"+System.currentTimeMillis();

   12./*--------------------------------------------------------

    * 消息发布

    * param1:Exchange的名称,如果没有指定,则使用Default Exchange

    * param2:routingKey,消息的路由Key,是由于Exchange(交换机)将消息发送到指定的消息队列

    * param3:消息包含的属性(通常不需要)

    * param4:消息体(需要转成字节数组)

    *

    * 这里没有定义交换机,消息将发送给默认交换机,每个队列也会绑定那个默认的交换机,但是不能是不绑定或解除绑定

    * */

            channel.basicPublish("","zhengxixi",null,data.getBytes());

            System.out.println("向RabbitMQ上传消息:"+data);

  13.发送完之后就把资源都关闭了,不关闭的话会一直在这里浪费资源----------                  if (channel!=null)

            {

                channel.close();

            }

            if(connection!=null)

            {

                connection.close();

            }

---------------------------------------------------------

                       RabbitMQ提供方上传消息流程

1. 创建连接工厂-----------------------------------------

 ConnectionFactory connectionFactory = new ConnectionFactory();

2.设置RabbitMQ安装的服务器的地址---------------------

connectionFactory.setHost("192.168.80.3");

3.设置RabbitMQ的端口号---------------------------

connectionFactory.setPort(5672);

4.设置登录用户和密码--------------------------------------

connectionFactory.setUsername("admin");

connectionFactory.setPassword("admin");

5.设置指定虚拟机:/为默认------------------------------  

  connectionFactory.setVirtualHost("/");

6.创建与RabbitMQ服务的TCP链接------------------------------------

connection = connectionFactory.newConnection();

7.创建于Exchange的通道,每个连接可以创建多个通道,每个通道代表一个会话任务---------------------------------------------------------

   channel = connection.createChannel();

8./*-------------------------------------------------

  * 声明队列:如果RabbitMQ中没有此队列将自动创建

  * param1:队列的名称

  * param2:是否持久化(rabbit重启后,该队列是否还存在)

  * param3:队列是否独占此链接(其他队列不能使用此链接)

  * param4:队列不再使用时是否自动删除此队列

  * param5:队列参数(通常不需要)

  * */

  channel.queueDeclare("zhengxixi", true, false, false, null);

9.实现消费的方法------------------------------------------

  DefaultConsumer defaultConsumer = new DefaultConsumer(channel)

  {

            /***

            * 当接收到消息后此方法将被调用

            * @param consumerTag 消费者标签,用于标识消费者的,在监听队列时设置channel,basicConsume(可以不设置)

            * @param envelope 信封,通过envelope

            * @param properties 消息属性

            * @param body 消息内容

            * @throws IOException

            */

      @Override

      public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException

      {

              //获取交换机

              String exchange = envelope.getExchange();

              //消息id,MQ在channel中用来标识消息的id,可用于确认消息已接受

              long deliveryTag = envelope.getDeliveryTag();

              //接收到的消息的内容

              String data = new String(body, "UTF-8");

              System.out.println("从客户端获取到数据为:"+data);

      }

    };

10.调用实现消费的方法获取数据(监听队列)-------------------------

/***

    * 参数:String queue , boolean autoAck , Consumer callback

    * 参数明细:

    * 1:queue:队列名称

    * 2.autoAck:自动回复,当消费者接收到消息后要告诉MQ消息已接收,

    *  如果将此参数设置为true表示会自动回复MQ,如果设置为false要通过编程实现回复

    * 3.callback:消费方法,当消费者接收到消息,需要执行的方法

    */

    channel.basicConsume("zhengxixi", true, defaultConsumer);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容