關(guān)于虛擬機(jī)中如何安裝CentOS7,在我這個(gè)文章中http://blog.csdn.net/junshangshui/article/details/79368111
- 下載erlang,因?yàn)閞abbitmq是erlang編寫的
http://www.erlang.org/downloads
這里我下載的是20.1版本的朱嘴。點(diǎn)擊OTP20.1后钝荡,進(jìn)入如下界面
保存這個(gè)文件诀蓉。下載完成后的文件為 otp_src_20.1.tar.gz
2.下載rabbitmq
http://www.rabbitmq.com/download.html
下載完成后文件為rabbitmq-server-generic-unix-3.7.3.tar.xz
3.將下載的這兩個(gè)文件復(fù)制到虛擬機(jī)中的CentOS7.2中的根目錄下的usr文件夾中
- 安裝erlang
打個(gè)一個(gè)終端浸遗,解壓文件 tar -zxvf otp_src_20.1.tar.gz
利用yum安裝erlang編譯所依賴的環(huán)境 yum -y install make gcc gcc-c++ kernel-devel m4ncurses-devel openssl-devel unixODBC-devel
到otp_src_20.1文件夾下,進(jìn)行configure安裝環(huán)境配置,--prefix=/usr/erlang 是說明將當(dāng)前的安裝放在usr/erlang文件夾下涣澡。
./configure --prefix=/usr/erlang--without-javac
編譯 make
安裝 make install 贱呐。安裝完成后會(huì)有一個(gè)erlang文件夾。otp_src_20.1和otp_src_20.1.tar.gz都可以刪除了入桂。
5.安裝rabbitmq
解壓rabbitmq-server-generic-unix-3.7.3.tar.xz到 usr下奄薇,然后改名為rabbitmq
因?yàn)橄螺d的rabbitmq是編譯好的方便的版本,所以只要解壓就行了抗愁。然后就可以刪除壓縮文件了
然后進(jìn)入計(jì)算機(jī)下面的etc文件夾中找到操作系統(tǒng)配置文件profile
在最后加上這兩行環(huán)境變量馁蒂,保存。(和windows系統(tǒng)中的環(huán)境變量的作用差不多)
export PATH=$PATH:/usr/erlang/bin
export PATH=$PATH:/usr/rabbitmq/sbin
然后重啟電腦就可生效了
直接在桌面點(diǎn)擊右鍵開啟一個(gè)終端蜘腌,輸入下面這行命令來開啟rabbitmq
rabbitmq-server
開啟web監(jiān)控.需要進(jìn)入目錄usr/rabbitmq/sbin 打開終端輸入以下命令來啟動(dòng)rabbitmq_management插件沫屡。
打開瀏覽器輸入 127.0.0.1:15672 就可以看到WEB管理界面,輸入guest guest登錄
大約等了一分鐘后就能看到rabbitmq的信息了撮珠。
6.配置rabbitmq
點(diǎn)擊節(jié)進(jìn)入后會(huì)發(fā)現(xiàn)沒有默認(rèn)配置文件
然后可查看/usr/rabbitmq/sbin下面的rabbitmq-defaults文件沮脖,如下圖,可以看到CONFIG_FILE的默認(rèn)路徑芯急。
從以下網(wǎng)址找個(gè)配置文件(點(diǎn)擊Raw勺届,然后復(fù)制),(根據(jù)上圖路徑)到usr/rabbitmq/etc/rabbitmq/下新建一個(gè)名為rabbitmq.config的文件娶耍,把復(fù)制的配置代碼粘貼上去涮因。
https://github.com/rabbitmq/rabbitmq-server/blob/master/docs/rabbitmq.config.example
然后在終端重啟rabbitmq-server,進(jìn)入web管理界面伺绽,再點(diǎn)擊進(jìn)入rabbitmq節(jié)點(diǎn)就可以看到有配置文件了养泡,不再是空的了。
打開rabbitmq.config文件后奈应,可以知道默認(rèn)的tcp連接端口是5672澜掩。
{tcp_listeners, [5672]} ,
還可以看到日志記錄級(jí)別,一般把info改為error杖挣,即出錯(cuò)才記日志肩榕,否則日志太大。
{rabbit_channel_lager_event, [{handlers, [
{lager_forwarder_backend,
[lager_event,error]}]}]},
{rabbit_conection_lager_event, [{handlers, [
{lager_forwarder_backend,
[lager_event,error]}]}]}
上面最后一行后面的逗號(hào)注意去掉
還可以設(shè)置最大占用的內(nèi)存數(shù)惩妇,去掉注釋株汉,默認(rèn)為最大占用40%內(nèi)存。達(dá)到40%后會(huì)觸發(fā)阻塞歌殃。
{vm_memory_high_watermark, 0.4}, 注意去掉這行最后的逗號(hào)
保存文件乔妈,然后在終端重啟rabbitmq-server就可以了
7.C#客戶端連接rabbitmq
打開官網(wǎng)說明文檔(人個(gè)用的chrome瀏覽器打開并且用它自帶的網(wǎng)頁翻譯功能翻轉(zhuǎn)為中文)
http://www.rabbitmq.com/dotnet-api-guide.html
了解了一下文檔后,新建一個(gè)asp.net core控制臺(tái)應(yīng)用程序氓皱,打開nuget工具路召,下載RabbitMQ.Client這個(gè)包勃刨。
在CentOS中設(shè)置防火墻允許外部訪問5672端口,如果要在win10中使用瀏覽器訪問虛擬機(jī)中的rabbitmq WEB管理工具股淡,則再添加一個(gè)15672端口身隐。
在CentOS中打開rabbitmq的web管理工具,添加一個(gè)用戶xu唯灵,密碼為abc123456贾铝,并且設(shè)置此用戶的權(quán)限。
在CentOS中打開終端輸入ifconfig得知ip地址埠帕。
新建一個(gè)asp.net core控制臺(tái)程序忌傻,在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();
//二、創(chuàng)建一個(gè)通道
IModel channel = conn.CreateModel();
//三镰矿、創(chuàng)建一個(gè)交換機(jī)
string exchangeName = "exchange1";
string queueName = "queue1";
string routingKey = "routingKey1";
channel.ExchangeDeclare(exchangeName, ExchangeType.Direct);
//四琐驴、創(chuàng)建一個(gè)消息隊(duì)列并且綁定到交換機(jī)上
channel.QueueDeclare(queueName,false,false,false,null);
channel.QueueBind(queueName,exchangeName,routingKey,null);
//五、發(fā)道一個(gè)消息到消息隊(duì)列
byte[] messageBodyBytes = System.Text.Encoding.UTF8.GetBytes("Hello, world!");
channel.BasicPublish(exchangeName, routingKey, null, messageBodyBytes);
Console.Read();
}
運(yùn)行程序后會(huì)發(fā)送一條消息到rabbitmq秤标,打開web管理工具可看到有一條消息了绝淡。
再添加一個(gè)asp.net core控制臺(tái)程序,從nuget下載好RabbitMQ.Client包苍姜。(記得設(shè)為啟動(dòng)項(xiàng)目)牢酵,然后定入如下代碼:
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();
//二衙猪、創(chuàng)建一個(gè)通道
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();
}
運(yùn)行后將成功取出消息蕴掏,然后在WEB管理工具中可看到消息為0了撩银。
特別問題嵌言,C#代碼連不上虛擬機(jī)中的rabbitmq央渣,報(bào)錯(cuò)如下:
RabbitMQ.Client.Exceptions.BrokerUnreachableException:“None of the specified endpoints were reachable”
修復(fù)一下LSP就行了青自。
以管理員身份運(yùn)行cmd嫂侍,輸入"netsh winsock reset"回車当叭,重啟電腦就好了破喻。
作者:junshangshui
來源:CSDN
原文:https://blog.csdn.net/junshangshui/article/details/79368061
版權(quán)聲明:本文為博主原創(chuàng)文章订咸,轉(zhuǎn)載請附上博文鏈接曼尊!