关于rabbitmq在Linux系统离线下进行简单部署,运行以及数据测试报告

1编译环境

进行一些依赖文件的安装(系统必须拥有此类文件,后续安装才能正常进行)。

由于系统处于离线状态,依赖文件需要自行下载,再进行相应的安装如下:

rpm -ivh ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm

rpm -ivh ncurses-libs-5.9-14.20130511.el7_4.x86_64.rpm

rpm -ivh ncurses-base-5.9-13.20130511.el7.noarch.rpm

rpm -ivh glibc-2.17-196.el7.i686.rpm glibc-common-2.17-196.el7.x86_64.rpm

rpm -ivh ncurses-devel-5.9-13.20130511.el7.x86_64.rpm

由于各个依赖文件也存在各项依赖关系,所以在安装的时候根据提示的信息进行安装,对应的依赖文件需要什么依赖,再根据相应的依赖进行安装。

2 erlang安装

进入erlang官网进行相关文件下载,本次测试下载文件为opt_src_20.2.tar.gz。

Linux下进行操作:

tar -xvf opt_src_20.2.tar.gz;

mkdir /usr/local/erlang;

cd opt_src_20.2;

./configure --prefix=/usr/local/erlang --without-javac;

 make && make install;

编译安装完成后进行环境变量的配置:

vim /etc/profile

ERL_HOME=/usr/local/erlang
       PATH=$ERL_HOME/bin:$PATH
       export ERL_HOME PATH

source /etc/profile

3 rabbitmq安装

进入官网下载对应的rabbitmq安装包,本次下载版本为:rabbitmq-server-3.7.4-1.el7.noarch.rpm。

Linux下进行操作:

rpm -ivh --nodeps rabbitmq-server-3.7.4-1.el7.noarch.rpm

Rabbitmq需要开放15672与5672端口

firewall-cmd --zone=public --add-port=15672/tcp --permanent

firewall-cmd --zone=public --add-port=5672/tcp --permanent

firewall-cmd --reload

 

启动rabbitmq web管理页面,此页面是安装rabbitmq自带的一个管理控制页面,只需要自己启动就行。

rabbitmq-plugins enable rabbitmq_management

 

开启rabbitmq服务

rabbitmq-server

 

   查看是否安装成功,登录部署rabbitmq服务器的端口管理页面,如本次安装的服务器为10.2.4.34,端口号为15672,页面网址为10.2.4.34:15672,登录网址出现对应的页面的内容。

9b0707a76fd0125a383b8e10c1e72fb9919.jpg

此页面可以进行rabbitmq的一些管理,方便后续rabbitmq的各项数据操作。

4 rabbitmq创建用户

创建rabbitmq用户,用来进行rabbitmq连接以及登录管理页面。

rabbitmqctl add_user root root

rabbitmqctl set_user_tags root administrator

rabbitmqctl set_permissions -p / root '.*' '.*' '.*'

此时,就创建了root用户,用户可以用root账号进行相应的登录。

5 测试

本次测试用Java编写简单的生产者与消费者代码进行相关的数据传输测试,具体的流程图如下所示:

2b0db7e1d6978d5198a6ba1b92859c4e0d2.jpg

6 生产者代码

public class Producer {

    public final static String QUEUE_NAME = "OneRabbitmq";//
队列名称,根据此参数进行数据传递接受
   
public final static String Exchange_Name = "OneExchange";

    public static void main(String[] args) throws IOException, TimeoutException{

        ConnectionFactory connectionFactory = new ConnectionFactory();

        connectionFactory.setHost("10.2.4.34");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("root");
        connectionFactory.setPassword("root");

        Connection connection = connectionFactory.newConnection();
        Channel channel = connection.createChannel();

       
        channel.exchangeDeclare(Exchange_Name,"topic",false,false,null);
        channel.queueDeclare(QUEUE_NAME,false,false,false,null);

        String message = "
操作one";//传送的数据

       
// 发送消息
       
channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));

        //
关闭通道和连接
       
channel.close();
        connection.close();
    }
}

 

此时运行生产者代码,由QUEUE_NAME队列传送message数据,目前还没有消费者进行接收,那么对应的message数据进行相关的保存,直到有消费者进行接收为止。可以用rabbitmq管理页面进行监控,查看此时rabbitmq的情况。

d3b9b9efc393d7342ded4504f93a0e208f9.jpg

由于目前消费者并没有接收相关的数据,所以目前由生产者产生的数据存储在rabbitmq中,一直等待消费者来进行获取。

7 消费者代码

public class Consumer {

    private final static String QUEUE_NAME = "OneRabbitmq";

    public static void main(String[] argv) throws java.io.IOException, java.lang.InterruptedException {

        ConnectionFactory connectionFactory = new ConnectionFactory();

        connectionFactory.setHost("10.2.4.34");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("root");
        connectionFactory.setPassword("root");

        Connection connection = connectionFactory.newConnection();

        Channel channel = connection.createChannel();

        channel.queueDeclare(QUEUE_NAME, false, false, false, null);

        QueueingConsumer consumer = new QueueingConsumer(channel);

        channel.basicConsume(QUEUE_NAME, true, consumer);
        while (true) {
            QueueingConsumer.Delivery delivery = consumer.nextDelivery();
            String message = new String(delivery.getBody());
            System.out.println("
接收到了" + QUEUE_NAME + "中的消息:" + message);
        }

    }
}

此时启动消费者代码,可以获取得到由生产者产生的数据message,结果如下:

02e352f6ece039a22b92ee8726a0a6d9599.jpg

再在rabbitmq管理页面进行查看,可以发现数据已经消失不存在了。

c23519023c6318480bff3920a072b778cf2.jpg

8 总结

   本次测试结果证明,rabbitmq可以进行相关数据的传递给对应的消费者,且如果消费者没有进行接受,有关的数据也不会消失,而是保存在rabbitmq中,所以在一定程度上,数据的安全性得到相关的保障,故可以用rabbitmq来进行数据的传输,后续对于消费者接受的数据完整性如果不高,是否也算接受成功,还有待考证。

转载于:https://my.oschina.net/u/3712269/blog/1839671

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值