RabbitMQ Install

1.下载安装包

假如下载到/opt目录中

所有版本的下载目录:http://www.rabbitmq.com/releases/rabbitmq-server/

# wget  http: //www.rabbitmq.com/releases/rabbitmq-server/v3.6.2/rabbitmq-server-generic-unix-3.6.2.tar.xz

2.解压安装包

# cd /opt
# xz -d  rabbitmq-server-generic-unix- 3.6 . 2 .tar.xz
# tar xvf rabbitmq-server-generic-unix- 3.6 . 2 .tar

3.启动服务

# cd /opt/rabbitmq_server- 3.6 . 2 /sbin
# ./rabbitmq-server -detached

4.增加账号权限

rabbitmq远程连接默认是使用guest用户,guest密码来连接的,但是只能通过localhost来连接,那对于客户端和rabbitmq服务器不是在同一台主机上的,连接就会报下面错误:

PLAIN login refused: user  'guest'  can only connect via localhost

此时需要创建一个新的账号,并设置权限:

# cd  /opt/rabbitmq_server- 3.6 . 2 /sbin
# ./rabbitmqctl add_user root  123456
# ./rabbitmqctl set_user_tags root administrator
# ./rabbitmqctl set_permissions -p / root  ".*"  ".*"  ".*"

5.启用Management Plugin

这个插件实际上已经随rabbitmq一道安装了,要做的是,enable它:

# ./rabbitmq-plugins enable rabbitmq_management

通过 http://rabbitmq-server-ip:15672,输入设置的用户名(root)和密码(123456)就能登录管理界面了,如图:

6.Demo(Java)

a. 消息发送者(Sender.java)

package  com.lm.rabbitmq;
import  com.rabbitmq.client.Channel;
import  com.rabbitmq.client.Connection;
import  com.rabbitmq.client.ConnectionFactory;
public  class  Send {
   private  final  static  String QUEUE_NAME =  "hello" ;
   public  static  void  main(String[] argv)  throws  Exception {
     ConnectionFactory factory =  new  ConnectionFactory();
     factory.setHost( "192.168.1.8" );
     factory.setPort( 5672 );
     factory.setUsername( "root" );
     factory.setPassword( "123456" );
     Connection connection = factory.newConnection();
     Channel channel = connection.createChannel();
     channel.queueDeclare(QUEUE_NAME,  false false false null );
     String message =  "Hello World!" ;
     channel.basicPublish( "" , QUEUE_NAME,  null , message.getBytes( "UTF-8" ));
     System.out.println( " [x] Sent '"  + message +  "'" );
     
     channel.close();
     connection.close();
   }
}

b.消息接收者(Receiver.java)

package  com.yhiker.rabbitmq;
import  com.rabbitmq.client.*;
import  java.io.IOException;
public  class  Receiver {
     private  final  static  String QUEUE_NAME =  "hello" ;
     public  static  void  main(String[] argv)  throws  Exception {
         ConnectionFactory factory =  new  ConnectionFactory();
         factory.setHost( "192.168.1.8" );
         factory.setUsername( "root" );
         factory.setPassword( "123456" );
         Connection connection = factory.newConnection();
         Channel channel = connection.createChannel();
         channel.queueDeclare(QUEUE_NAME,  false false false null );
         System.out.println( " [*] Waiting for messages. To exit press CTRL+C" );
         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 +  "'" );
             }
         };
         channel.basicConsume(QUEUE_NAME,  true , consumer);
     }
}

 

 

猜你喜欢

转载自penghuaiyi.iteye.com/blog/2309887