RabbitMQ教程(二) ——linux下安装rabbitmq

安装过程参考官网:

Installing on RPM-based Linux (RHEL, CentOS, Fedora, openSUSE)

首先需要安装erlang,参考:http://fedoraproject.org/wiki/EPEL/FAQ#howtouse

1rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm 2yum install erlang

安装过程中会有提示,一路输入“y”即可。

完成后安装RabbitMQ:

先下载rpm:

wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm

下载完成后安装:

yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm

完成后启动服务:

service rabbitmq-server start

可以查看服务状态:

service rabbitmq-server status

这里可以看到log文件的位置,转到文件位置,打开文件:

这里显示的是没有找到配置文件,我们可以自己创建这个文件

1cd /etc/rabbitmq/ 2vi rabbitmq.config

编辑内容如下:

[{rabbit, [{loopback_users, []}]}].

这里的意思是开放使用,rabbitmq默认创建的用户guest,密码也是guest,这个用户默认只能是本机访问,localhost或者127.0.0.1,从外部访问需要添加上面的配置。

保存配置后重启服务:

1service rabbitmq-server stop 2service rabbitmq-server start

此时就可以从外部访问了,但此时再看log文件,发现内容还是原来的,还是显示没有找到配置文件,可以手动删除这个文件再重启服务,不过这不影响使用

1rm rabbit\@mythsky.log 2service rabbitmq-server stop 3service rabbitmq-server start

开放5672端口:

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

在Windows上进行测试:

新建.net core控制台项目,引用RabbitMQ.Client包:

Install-Package RabbitMQ.Client

测试代码:

复制代码

1public static void Main(string[] args) 2 { 3 ConnectionFactory factory = new ConnectionFactory(); 4 factory.UserName = "guest"; 5 factory.Password = "guest"; 6 factory.VirtualHost = "/"; 7 factory.HostName = "localhost"; 8 //factory.HostName = "10.255.19.111"; 9 try 10 { 11 IConnection conn = factory.CreateConnection(); 12 IModel model = conn.CreateModel(); 13 string exchangeName = "test"; 14 string queueName = "testq"; 15 string routingKey = "first"; 16 17 model.ExchangeDeclare(exchangeName, ExchangeType.Direct); 18 model.QueueDeclare(queueName, false, false, false, null); 19 model.QueueBind(queueName, exchangeName, routingKey, null); 20 byte[] messageBodyBytes = System.Text.Encoding.UTF8.GetBytes("Hello, world!"); 21 model.BasicPublish(exchangeName, routingKey, null, messageBodyBytes); 22 Console.WriteLine("message sended."); 23 24 bool noAck = false; 25 BasicGetResult result = model.BasicGet(queueName, noAck); 26 if (result == null) 27 { 28 Console.Write("no message."); 29 } 30 else 31 { 32 IBasicProperties props = result.BasicProperties; 33 byte[] body = result.Body; 34 model.BasicAck(result.DeliveryTag, false); 35 string message = System.Text.Encoding.UTF8.GetString(body); 36 Console.Write(message); 37 } 38 } 39 catch (Exception ex) 40 { 41 Console.Write(ex.Message); 42 } 43 }

复制代码

 也可以使用官网的例子(这里更清晰):

http://www.rabbitmq.com/tutorials/tutorial-one-dotnet.html

发送端:

复制代码

1using System; 2using RabbitMQ.Client; 3using System.Text; 4 5class Send 6{ 7 public static void Main() 8 { 9 var factory = new ConnectionFactory() { HostName = "localhost" }; 10 using(var connection = factory.CreateConnection()) 11 using(var channel = connection.CreateModel()) 12 { 13 channel.QueueDeclare(queue: "hello", 14 durable: false, 15 exclusive: false, 16 autoDelete: false, 17 arguments: null); 18 19 string message = "Hello World!"; 20 var body = Encoding.UTF8.GetBytes(message); 21 22 channel.BasicPublish(exchange: "", 23 routingKey: "hello", 24 basicProperties: null, 25 body: body); 26 Console.WriteLine(" [x] Sent {0}", message); 27 } 28 29 Console.WriteLine(" Press [enter] to exit."); 30 Console.ReadLine(); 31 } 32}

复制代码

接收端:

复制代码

1using RabbitMQ.Client; 2using RabbitMQ.Client.Events; 3using System; 4using System.Text; 5 6class Receive 7{ 8 public static void Main() 9 { 10 var factory = new ConnectionFactory() { HostName = "localhost" }; 11 using(var connection = factory.CreateConnection()) 12 using(var channel = connection.CreateModel()) 13 { 14 channel.QueueDeclare(queue: "hello", 15 durable: false, 16 exclusive: false, 17 autoDelete: false, 18 arguments: null); 19 20 var consumer = new EventingBasicConsumer(channel); 21 consumer.Received += (model, ea) => 22 { 23 var body = ea.Body; 24 var message = Encoding.UTF8.GetString(body); 25 Console.WriteLine(" [x] Received {0}", message); 26 }; 27 channel.BasicConsume(queue: "hello", 28 noAck: true, 29 consumer: consumer); 30 31 Console.WriteLine(" Press [enter] to exit."); 32 Console.ReadLine(); 33 } 34 } 35}

复制代码

在Windows上发送,在CentOS上接收,效果如图:

开启管理UI:

1rabbitmq-plugins enable rabbitmq_management 2firewall-cmd --zone=public --add-port=15672/tcp --permanent 3firewall-cmd --reload

在Windows下打开地址:

http://10.255.19.111:15672

用户名和密码都是 guest

这样就可以方便管理RabbitMQ了。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

swap空间的增减方法

(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap