一、安裝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
二.安裝rabbitmqwget 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