rabbitMQ在centOS7上的安装

一、安装erlang

安装依赖环境

yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel

wget http://erlang.org/download/otp_src_19.0.tar.gz

解压: tar -xvzf otp_src_19.0.tar.gz

配置
./configure --prefix=/usr/local/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac

make

make install

配置环境变量:vim /etc/profile

ERLANG_HOME=/usr/local/erlang
PATH=$PATH:$JAVA_HOME/bin:$ERLANG_HOME/bin

使配置生效: source /etc/profile

检验erl

[root@hjds sbin]# erl

二.安装rabbitmq
               wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.1/rabbitmq-server-3.5.1.tar.gz
               tar -zxvf rabbitmq-server-3.5.1.tar.gz 
               cd abbitmq-server-3.5.1
               make
               make TARGET_DIR=/usr/local/rabbitmq SBIN_DIR=/usr/local/rabbitmq/sbin MAN_DIR=/usr/local/rabbitmq/man DOC_INSTALL_DIR=/usr/local/rabbitmq/doc install
               报错处理:
                    /bin/sh: xmlto: command not found
                    /bin/sh: line 2: xmlto: command not found
                   解决:yum install xmlto

环境变量配置:

RABBIT_HOME=/usr/local/rabbitmq
PATH=$PATH:$JAVA_HOME/bin:$RABBIT_HOME/sbin

使配置生效: source /etc/profile

三、管理命令
       启动:rabbitmq-server start
       关闭:rabbitmqctl stop
       状态:rabbitmqctl status
四、插件
    启动web管理插件
        rabbitmq-plugins enable rabbitmq_management
        错误解决:
            Error: {cannot_write_enabled_plugins_file,"/etc/rabbitmq/enabled_plugins",            enoent}
            mkdir /etc/rabbitmq

重新启动输入地址:localhost:15672,帐号默认为guest,密码guest,此帐号默认只能在本机访问。不建议打开远程访问。你可以创建一个帐户,并设置可以远程访问的角色进行访问。
            如:rabbitmqctl add_user ganxiangdong ganxiangdong
            rabbitmqctl  set_user_tags  ganxiangdong administrator
五、用户管理
     默认的guest帐户相当于root帐户
     rabbitmqctl add_user username password 添加帐户
     rabbitmqctl change_password username newpassword 修改密码
     rabbitmqctl delete_user username 删除帐户
     rabbitmqctl list_users 列出所有帐户
     rabbitmqctl  set_user_tags  User  Tag 设置角色(administrator、monitoring、policymaker、management、其它)
     立即生效,不需重启

六、代码检测

用Maven新建一个工程,修改POM文件,增加如下:


  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.rabbitmq</groupId>
        <artifactId>amqp-client</artifactId>
        <version>3.5.6</version>
    </dependency>
  </dependencies>

使用官方的java-client代码:


public class App 
{
    private final static String QUEUE_NAME = "hello";
    static boolean isBreak =false;


    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );


        ConnectionFactory factory = new ConnectionFactory();
        factory.setUsername("test");
        factory.setPassword("test123");
        factory.setHost("192.168.0.197");
        factory.setVirtualHost("/");
        factory.setPort(5672);


        try {
            Connection connection = factory.newConnection();
            Channel channel =  connection.createChannel();


            Consumer consumer = new DefaultConsumer(channel) {
                  @Override
                  public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body)
                      throws IOException {
                    String message = new String(body, "UTF-8");
                    System.out.println(" [x] Received '" + message + "'");
                    isBreak=true;
                  }
                };
            channel.basicConsume(QUEUE_NAME, true, consumer);




            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            String message = "Hello World!";
            channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
            System.out.println(" [x] Sent '" + message + "'");


            while(!isBreak){
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }


            channel.close();
            connection.close();


        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (TimeoutException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 

    }
}

ConnectionFactory填创建连接需要的参数(hostaddress、account等),然后newConnection(),得到Connection,并创建出一个Channel。 我们能用Channel构造出一个消费者Consumer用来监听收到的消息,也可以使用channel发布消息。RabbitMQ的消息是byte[],所以需要将字串转成字节数组才能发送。


参考:http://blog.csdn.net/phpwww/article/details/44980261

http://blog.csdn.net/stonexmx/article/details/51850557



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章