zoukankan      html  css  js  c++  java
  • RabbitMQ安装和与Sping集成使用

    安装

    1、安装rabbitmq,此命令会自动安装erlang依赖

    sudo apt-get install rabbitmq-server

    2、要想在浏览器登录管理页面,需要先安装插件

    sudo rabbitmq-plugins enable rabbitmq_management

    3、添加用户

    sudo rabbitmqctl add_user username password

    4、设置用户角色和权限

    sudo rabbitmqctl set_user_tags username administrator
    sudo rabbitmqctl set_permissions -p / username ".*" ".*" ".*"

    执行完以上命令,打开浏览器 http://ip:15672 就可以登录管理页面了

    处于安全的考虑,guest这个默认的用户只能通过http://localhost:15672 来登录,其他的IP无法直接使用这个账号。

    建立配置文件,新建rabbitmq配置文件  /etc/rabbitmq/rabbitmq.config , 内容如下:

    [{rabbit, [{loopback_users, []}]}].

    加入配置之后,重启服务就可以使用guest用户登录了。

    更多相关管理命令:

    sudo service rabbitmq-server start  /  rabbitmq-server -detached             //启动服务
    sudo rabbitmqctl stop                               //关闭服务
    sudo rabbitmqctl list_connections              //查看链接
    sudo rabbitmqctl list_queues                    //查看队列
    sudo rabbitmqctl list_channels                  //查看频道
    sudo rabbitmqctl list_users                       //查看全部用户
    sudo rabbitmqctl cluster_status                //查看集群状态

     Rabbitmq与Spring集成

     1、添加pom依赖

    <dependency>
         <groupId>com.rabbitmq</groupId>
         <artifactId>amqp-client</artifactId>
         <version>4.1.0</version>
     </dependency>
    
     <dependency>
         <groupId>org.springframework.amqp</groupId>
         <artifactId>spring-rabbit</artifactId>
         <version>1.7.5.RELEASE</version>
     </dependency>

    注意:amqp-client   5.x.x.x版本需要jdk1.8支持,所以如果使用的jdk是1.7就必须使用5.x.x.x一下的版本

    2、添加配置

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4      xmlns:context="http://www.springframework.org/schema/context"
     5      xmlns:util="http://www.springframework.org/schema/util"
     6      xmlns:aop="http://www.springframework.org/schema/aop"
     7      xmlns:tx="http://www.springframework.org/schema/tx"
     8      xmlns:rabbit="http://www.springframework.org/schema/rabbit"
     9      xmlns:p="http://www.springframework.org/schema/p"
    10      xsi:schemaLocation="
    11      http://www.springframework.org/schema/context
    12      http://www.springframework.org/schema/context/spring-context-4.1.xsd
    13      http://www.springframework.org/schema/beans
    14      http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
    15      http://www.springframework.org/schema/util
    16      http://www.springframework.org/schema/util/spring-util-4.1.xsd
    17      http://www.springframework.org/schema/aop
    18      http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
    19      http://www.springframework.org/schema/tx
    20      http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
    21      http://www.springframework.org/schema/rabbit
    22      http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd">
    23 
    24     <context:property-placeholder location="classpath:rabbitmq.properties"/>
    25     
    26     <rabbit:connection-factory id="connectionFactory" host="${rabbit.hosts}" username="${rabbit.username}" password="${rabbit.password}" port="${rabbit.port}"  virtual-host="${rabbit.virtualHost}"/>
    27     <rabbit:admin connection-factory="connectionFactory"/>
    28     
    29     <rabbit:queue id="first_queue" name="first_queue" durable="true" auto-delete="false" exclusive="false" />
    30     <rabbit:queue id="second_queue" name="second_queue" durable="true" auto-delete="false" exclusive="false" /> 
    31     
    32     <rabbit:direct-exchange name="first_exchange" durable="true" auto-delete="false" id="second_exchange">
    33         <rabbit:bindings>
    34             <rabbit:binding queue="first_queue" key="first_queue"/>
    35             <rabbit:binding queue="second_queue" key="second_queue"/>
    36       </rabbit:bindings>
    37     </rabbit:direct-exchange>
    38     
    39     <bean id="firstConsumer" class="com.thinkgem.jeesite.modules.mq.consumer.FirstConsumer"></bean>
    40     <bean id="secondConsumer" class="com.thinkgem.jeesite.modules.mq.consumer.SecondConsumer"></bean>
    41     
    42     <rabbit:listener-container connection-factory="connectionFactory" acknowledge="auto">
    43         <rabbit:listener queues="first_queue" method="onMessage" ref="firstConsumer"/>
    44     </rabbit:listener-container>
    45     <rabbit:listener-container connection-factory="connectionFactory" acknowledge="auto">
    46         <rabbit:listener queues="second_queue" method="onMessage" ref="secondConsumer"/>
    47     </rabbit:listener-container>
    48         
    49 </beans>
    View Code

    rabbitmq.properties如下:

    rabbit.hosts=192.168.78.132
    rabbit.username=admin
    rabbit.password=admin
    rabbit.port=5672
    rabbit.virtualHost=/

    消费者实现如下:

     1 package com.thinkgem.jeesite.modules.mq.consumer;
     2 
     3 import org.springframework.amqp.core.Message;
     4 import org.springframework.amqp.core.MessageListener;
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 
     7 
     8 public class FirstConsumer implements MessageListener {
     9 
    10     @Override
    11     public void onMessage(Message msg) {
    12         try{
    13             String body = new String(msg.getBody(), "UTF-8");
    14             System.out.println("In::: " + body);
    15             // 消息处理逻辑
    16             
    17             
    18         }catch(Exception e){
    19             e.printStackTrace();
    20         }
    21     }
    22 
    23 }

    另外一个就省略不贴了。。。

    使用 Stomp协议实现web客户端通信

    1、rabbitmq安装stomp插件,官方链接

    sudo rabbitmq-plugins enable rabbitmq_stomp

    服务端和客户端具体配置请参考:待续。。。。。。

  • 相关阅读:
    goland设置goproxy是参数时Environment时的设置方法
    /etc/selinux/config模式修改
    python_matplotlib_中文字体
    tmux_server_version_is_too_old
    linux_shell_生成随机整数
    newifi_D2_新3_lede_扩容overlay_装可道云
    RSA.js_公钥加密_NoPadding_golang实现_n_e_pem格式互转
    python_matplotlib_Axisartist_作图_多个Y轴共用X轴
    @JsonProperty注解使用详解
    Filter中抛出异常@RestControllerAdvice注解无法捕获的问题
  • 原文地址:https://www.cnblogs.com/Vince-blogs/p/9393696.html
Copyright © 2011-2022 走看看