一、安装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环境变量配置:
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文件,增加如下:
使用官方的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