CentOS7.2中安装rabbitmq

关于虚拟机中如何安装CentOS7,在我这个文章中http://blog.csdn.net/junshangshui/article/details/79368111

1. 下载erlang,因为rabbitmq是erlang编写的

http://www.erlang.org/downloads

这里我下载的是20.1版本的。点击OTP20.1后,进入如下界面


保存这个文件。下载完成后的文件为 otp_src_20.1.tar.gz

2.下载rabbitmq

http://www.rabbitmq.com/download.html


下载完成后文件为rabbitmq-server-generic-unix-3.7.3.tar.xz

扫描二维码关注公众号,回复: 1032823 查看本文章

3.将下载的这两个文件复制到虚拟机中的CentOS7.2中的根目录下的usr文件夹中


4. 安装erlang

打个一个终端,解压文件 tar -zxvf otp_src_20.1.tar.gz


利用yum安装erlang编译所依赖的环境 yum -y install make gcc gcc-c++ kernel-devel m4ncurses-devel openssl-devel unixODBC-devel

到otp_src_20.1文件夹下,进行configure安装环境配置,--prefix=/usr/erlang 是说明将当前的安装放在usr/erlang文件夹下。

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


编译 make

安装 make install 。安装完成后会有一个erlang文件夹。otp_src_20.1和otp_src_20.1.tar.gz都可以删除了。


5.安装rabbitmq

解压rabbitmq-server-generic-unix-3.7.3.tar.xz到 usr下,然后改名为rabbitmq

因为下载的rabbitmq是编译好的方便的版本,所以只要解压就行了。然后就可以删除压缩文件了


然后进入计算机下面的etc文件夹中找到操作系统配置文件profile


在最后加上这两行环境变量,保存。(和windows系统中的环境变量的作用差不多)

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

export PATH=$PATH:/usr/rabbitmq/sbin

然后重启电脑就可生效了

直接在桌面点击右键开启一个终端,输入下面这行命令来开启rabbitmq

rabbitmq-server

开启web监控.需要进入目录usr/rabbitmq/sbin 打开终端输入以下命令来启动rabbitmq_management插件。

打开浏览器输入 127.0.0.1:15672 就可以看到WEB管理界面,输入guest   guest登录


大约等了一分钟后就能看到rabbitmq的信息了。

6.配置rabbitmq

点击节进入后会发现没有默认配置文件

然后可查看/usr/rabbitmq/sbin下面的rabbitmq-defaults文件,如下图,可以看到CONFIG_FILE的默认路径。


从以下网址找个配置文件(点击Raw,然后复制),(根据上图路径)到usr/rabbitmq/etc/rabbitmq/下新建一个名为rabbitmq.config的文件,把复制的配置代码粘贴上去。

https://github.com/rabbitmq/rabbitmq-server/blob/master/docs/rabbitmq.config.example

 

然后在终端重启rabbitmq-server,进入web管理界面,再点击进入rabbitmq节点就可以看到有配置文件了,不再是空的了。

打开rabbitmq.config文件后,可以知道默认的tcp连接端口是5672。

{tcp_listeners, [5672]} ,

还可以看到日志记录级别,一般把info改为error,即出错才记日志,否则日志太大。

      {rabbit_channel_lager_event, [{handlers, [

                                      {lager_forwarder_backend,

                                       [lager_event,error]}]}]},

      {rabbit_conection_lager_event, [{handlers, [

                                        {lager_forwarder_backend,

                                         [lager_event,error]}]}]}

 

上面最后一行后面的逗号注意去掉

还可以设置最大占用的内存数,去掉注释,默认为最大占用40%内存。达到40%后会触发阻塞。

{vm_memory_high_watermark, 0.4},  注意去掉这行最后的逗号

保存文件,然后在终端重启rabbitmq-server就可以了

7.C#客户端连接rabbitmq

打开官网说明文档(人个用的chrome浏览器打开并且用它自带的网页翻译功能翻转为中文)

http://www.rabbitmq.com/dotnet-api-guide.html

了解了一下文档后,新建一个asp.net core控制台应用程序,打开nuget工具,下载RabbitMQ.Client这个包。

在CentOS中设置防火墙允许外部访问5672端口,如果要在win10中使用浏览器访问虚拟机中的rabbitmq WEB管理工具,则再添加一个15672端口。


在CentOS中打开rabbitmq的web管理工具,添加一个用户xu,密码为abc123456,并且设置此用户的权限。




在CentOS中打开终端输入ifconfig得知ip地址。


新建一个asp.net core控制台程序,在nuget中下载RabbitMQ.Client包。写入如下代码:

static void Main(string[] args)
        {
            //一、连接rabbitmq
            ConnectionFactory factory = new ConnectionFactory
            {
                UserName = "xu",
                Password = "abc123456",
                HostName = "192.168.213.140",
                Port = 5672
            };
            IConnection conn = factory.CreateConnection();

            //二、创建一个通道
            IModel channel = conn.CreateModel();

            //三、创建一个交换机
            string exchangeName = "exchange1";
            string queueName = "queue1";
            string routingKey = "routingKey1";
            channel.ExchangeDeclare(exchangeName, ExchangeType.Direct);

            //四、创建一个消息队列并且绑定到交换机上
            channel.QueueDeclare(queueName,false,false,false,null);
            channel.QueueBind(queueName,exchangeName,routingKey,null);

            //五、发道一个消息到消息队列
            byte[] messageBodyBytes = System.Text.Encoding.UTF8.GetBytes("Hello, world!");
            channel.BasicPublish(exchangeName, routingKey, null, messageBodyBytes);

            Console.Read();
        }

运行程序后会发送一条消息到rabbitmq,打开web管理工具可看到有一条消息了。


再添加一个asp.net core控制台程序,从nuget下载好RabbitMQ.Client包。(记得设为启动项目),然后定入如下代码:

static void Main(string[] args)
        {
            //一、连接rabbitmq
            ConnectionFactory factory = new ConnectionFactory
            {
                UserName = "xu",
                Password = "abc123456",
                HostName = "192.168.213.140",
                Port = 5672
            };
            IConnection conn = factory.CreateConnection();

            //二、创建一个通道
            IModel channel = conn.CreateModel();

            //三、取出消息
            string queueName = "queue1";
            BasicGetResult result = channel.BasicGet(queueName, true);

            var msg = Encoding.UTF8.GetString(result.Body);
            Console.WriteLine(msg);
            Console.Read();
        }

运行后将成功取出消息,然后在WEB管理工具中可看到消息为0了。

特别问题,C#代码连不上虚拟机中的rabbitmq,报错如下:
RabbitMQ.Client.Exceptions.BrokerUnreachableException:“None of the specified endpoints were reachable”

修复一下LSP就行了。
以管理员身份运行cmd,输入"netsh winsock reset"回车,重启电脑就好了。

猜你喜欢

转载自blog.csdn.net/junshangshui/article/details/79368061