centos7 安装rabbitmq(环境搭建)

下载erlang

http://www.erlang.org/downloads/19.3

image.png

解压与安装

  • 安装依赖包
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel libtool libtool-ltdl-devel 
  • 解压
tar zxvf otp-src_19.2.tar.gz

  • 配置
cd opt_src_19.3
./otp_build autoconf

./configure  --prefix=/opt/erlang

  • 编译与安装
make 
make install
  • 环境变量
sudo vim /etc/profile
image.png
ERLANG_HOME=/opt/erlang
export PATH=$PATH:$ERLANG_HOME/bin
export ERLANG_HOME

  • 重新加载
source /etc/profile
  • 测试
erl
image.png

安装rabbitmq

xz -d rabbitmq-server-generic-unix-3.6.12.tar.xz
tar -xvf rabbitmq-server-generic-unix-3.6.12.tar -C /opt

  • 命名
cd /opt
mv rabbitmq_server-3.6.12 rabbitmq
  • 环境变量
export PATH=$PATH:/opt/rabbitmq/sbin
export RABBITMQ_HOME=/opt/rabbitmq

image.png

** 重新加载

source /etc/profile
  • web插件
rabbitmq-plugins enable rabbitmq_management
  • 开放防火墙
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload
  • 后台运行
rabbitmq-server -detached

-detached 参数是为了能够让rabbitmq服务以守护的方式在后台运行,不会因为当前的shell窗口关闭而影响

  • 启动服务
    rabbitmq 安装后默认不是以后台进程的方式启动的,要想使 rabbitmq 在系统启动时默认以后台进程的方式启动,请以管理员身份执行以下命令:
chkconfig rabbitmq-server on
  • 停止
rabbitmqctl stop
  • 访问


    image.png

用户名密码都是guest/guest
发现登录不了
这个帐户有限制,默认只能在本地网络(localhost),远程网络访问受限,添加一个用户


image.png
  • 添加用户
 rabbitmqctl add_user root root

用户名密码都 是root

  • 设置权限 为adminstrator
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
  • 设置root 为管理员角色
rabbitmqctl set_user_tags root administrator
image.png
  • 再次访问


    image.png

测试

              <dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>4.2.1</version>
        </dependency>

  • 生产者
package com.ghg.mq01.producer;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;

public class RabbitProducer {

    private static final String EXCHANGE_NAME = "exchange_demo";
    private static final String ROUTING_KEY = "routingkey_demo";
    private static final String QUEUR_NAME = "queue_demo";
    //rabbitmq的服务地址
    private static final String IP_ADDRESS = "10.18.200.199";
    //RabbitMq 服务端 默认端口号为5672
    private static final int PORT = 5672;
    //用户名
    private static final String USER_NAME = "root";
    //密码
    private static final String PASSWORD = "root";
  
    
    public static void main(String[] args) throws IOException, TimeoutException {
        ConnectionFactory connectionFactory = new ConnectionFactory();
        /**
         * 设置ip
         * port
         * 用户名
         * 密码
         */
        connectionFactory.setHost(IP_ADDRESS);
        connectionFactory.setPort(PORT);
        connectionFactory.setUsername(USER_NAME);
        connectionFactory.setPassword(PASSWORD);
        
        /**
         * 创建连接
         */
        Connection connection = connectionFactory.newConnection();
        
        /**
         * 创建信道
         */
        Channel channel = connection.createChannel();
        
        /**
         * 创建一个type=direct 持久化的 非自动删除的交换器
         */
        
        channel.exchangeDeclare(EXCHANGE_NAME, "direct", true, false, null);
        /**
         * 创建一个持久化 百排他的 非自动删除的队列
         */
        channel.queueDeclare(QUEUR_NAME, true, false, false, null);
        /**
         * 将交换器与队列通过路由键绑定
         */
        
        channel.queueBind(QUEUR_NAME, EXCHANGE_NAME, ROUTING_KEY);
        /**
         * 发送一条持 久化消息
         */
        String message="Hello RabbitMq!";
        channel.basicPublish(EXCHANGE_NAME, ROUTING_KEY, MessageProperties.PERSISTENT_TEXT_PLAIN , message.getBytes());
        
        /**
         * 关闭资源
         */
        channel.close();
        connection.close();
    }
}

  • 消费者
package com.ghg.mq01.cunsumer;

import static org.junit.Assert.fail;

import java.io.IOException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.Address;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.AMQP.BasicProperties;

public class RabbitConsumer {
    private static final String EXCHANGE_NAME = "exchange_demo";
    private static final String ROUTING_KEY = "routingkey_demo";
    private static final String QUEUR_NAME = "queue_demo";
    //rabbitmq的服务地址
    private static final String IP_ADDRESS = "10.18.200.199";
    //RabbitMq 服务端 默认端口号为5672
    private static final int PORT = 5672;
    //用户名
    private static final String USER_NAME = "root";
    //密码
    private static final String PASSWORD = "root";
    
    public static void main(String[] args) throws IOException, TimeoutException, InterruptedException {
        
        Address[] addresses = new Address[] {new Address(IP_ADDRESS, PORT)};
        /**
         * 1.建立连接工厂
         */
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setUsername(USER_NAME);
        connectionFactory.setPassword(PASSWORD);
        
        /**
         * 2.创建连接 和生产者有一点不同
         */
        Connection connection = connectionFactory.newConnection(addresses);
        
        /**
         * 3.创建信道
         */
        final Channel channel = connection.createChannel();
        
        /**
         * 4.设置客户端最多接收示被ack的消息个数
         */
        channel.basicQos(64);
        
        
        
        Consumer consumer  =new DefaultConsumer(channel) {
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body)
                    throws IOException {
                System.out.println("接收消息 :   "+new String(body));
                try {
                    TimeUnit.SECONDS.sleep(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                channel.basicAck(envelope.getDeliveryTag(), false);
            }
        };
        
        /**
         * 回调
         */
        channel.basicConsume(QUEUR_NAME, consumer);
        /**
         * 关闭资源
         */
        TimeUnit.SECONDS.sleep(5);
        channel.close();
        connection.close();
        
        
    }
}

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,340评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,762评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,329评论 0 329
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,678评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,583评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,995评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,493评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,145评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,293评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,250评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,267评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,973评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,556评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,648评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,873评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,257评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,809评论 2 339

推荐阅读更多精彩内容

  • 整体架构 部署步骤 基于 Docker 基本概念内存节点只保存状态到内存,例外情况是:持久的 queue 的内容将...
    mvictor阅读 12,736评论 5 30
  • RabbitMQ的安装 RabbitMQ下载地址 RabbitMQ是由LShift提供的一个Advanced Me...
    二月_春风阅读 14,420评论 0 10
  • rabbitmq有3种模式,集群模式2种• 单机模式:即单机情况不做集群,就单独运行一个rabbitmq而已。...
    嗷大彬彬阅读 3,998评论 1 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,559评论 18 139
  • 上妇产课看到全程孕妇生产过程 多的让我感触颇深的是一位产妇的老公。 他全程陪护 老师说这个男人是少数勇敢的人 他全...
    我是啊喂啊啊阅读 224评论 0 1