搭建高可用的rabbitmq集群 + Mirror Queue + 使用C#驱动连接
来源:互联网 发布:南风大大的毒姐数据 编辑:程序博客网 时间:2024/06/06 02:40
我们知道rabbitmq是一个专业的MQ产品,而且它也是一个严格遵守AMQP协议的玩意,但是要想骚,一定需要拿出高可用的东西出来,这不本篇就跟大家说
一下cluster的概念,rabbitmq是erlang写的一个成品,所以知道如何构建erlang的node集群就ok了,他需要一个统一的cookie机制。。。本篇的测试环境如下:
centos1:192.168.23.147
centos2:192.168.23.145
截图如下:
一:cookie机制
刚才也说了,要想实现cluster集群,必须保证各台机器上的cookie文件内容一致,那问题来了。。。cookie在哪呢?从rabbitmq的官网上可以找到这么
一句话,如下图:
ok,官网说的非常清楚了,那接下来我们看一下$HOME变量指向的是哪里。。。
[root@rabbitmq1 Desktop]# echo $HOME/root[root@rabbitmq1 Desktop]#
那接下来我就去看看(Centos1 .147)这台的/root 文件下可否能够找到,如下图:
牛逼了吧,嘿嘿,现在我们要做的事情,就是把Centos2的cookie文件内容替换成Centos1的cookie内容。
二:使用host映射erlang节点
现在cookie值是一样的了,然后需要在/etc/hosts中追加一下host影射,方便erlang节点之间相互发现,接下来就是在2台centos上追加同样的host地址:
三:rabbitmqctl cluster命令
好了,准备工作我们都做好了,大家可以重启一下机器,开启我们的rabbitmq,这时候会有惊喜发现的。。。
由原来的localhost改成现在的rabbitmq2了,看到了吧~~~ 接下来大家可以把两台rabbitmq开启了。
1. 在centos1上使用rabbitmqctl cluster_status看看集群现在的状况
[root@rabbitmq1 Desktop]# rabbitmqctl cluster_statusCluster status of node rabbit@rabbitmq1 ...[{nodes,[{disc,[rabbit@rabbitmq1]}]}, {running_nodes,[rabbit@rabbitmq1]}, {cluster_name,<<"rabbit@rabbitmq1">>}, {partitions,[]}, {alarms,[{rabbit@rabbitmq1,[]}]}][root@rabbitmq1 Desktop]#
可以看到,当前的running-nodes中只有一台,刚好就是本机的erlang节点本身,接下来我们看一下是否能够连接到rabbit@rabbitmq2上去。。。
2. join_cluster命令
这个命令之前,需要将本机的rabbitmq关闭,然后进行join操作,从下图中可以看到,我们已经连接到了centos2上的rabbitmq了。。。
[root@rabbitmq1 Desktop]# rabbitmqctl stop_appStopping node rabbit@rabbitmq1 ...[root@rabbitmq1 Desktop]# rabbitmqctl join_cluster rabbit@rabbitmq2Clustering node rabbit@rabbitmq1 with rabbit@rabbitmq2 ...[root@rabbitmq1 Desktop]# rabbitmqctl start_appStarting node rabbit@rabbitmq1 ...[root@rabbitmq1 Desktop]#
3. 使用webui看一下最后的效果
看到没有,现在我们的rabbitmq集群已经搭建成功了,如果你有更多的机器,都可以使用这个join命令加入吧,很简单吧~~~
四:mirror queue
从名字上可以看出,就是镜像队列的意思,也就是说queue能在我们多台机器中同步,设置的方式也能简单,只需要在webui的policy上面设置即可。。。
这段设置表示当前如果是mytest开头的队列都是“镜像队列”,当然也可以用代码来实现,并且实现自动同步的功能,如下:
rabbitmqctl set_policy ha-all "^mytest" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
五:使用C#驱动连接
再好的cluster最后都需要用语言驱动连接,这样才能真正的落地,我选择的驱动是官方的,大家可以在nuget上面下载一下:
接下来我需要演示向 queue=mytest1队列中推送数据,亮点在于我在CreateConnection方法中塞入了多个ip地址。。。如下代码:
class Program
{
static void Main(string[] args)
{
ConnectionFactory factory = new ConnectionFactory()
{
UserName = "datamip",
Password = "datamip",
AutomaticRecoveryEnabled = true,
TopologyRecoveryEnabled = true
};
//第一步:创建connection
var connection = factory.CreateConnection(new string[2] { "192.168.23.147", "192.168.23.145" });
//第二步:创建一个channel
var channel = connection.CreateModel();
var result = channel.QueueDeclare("mytest1", true, false, false, null);
for (int i = 0; i < int.MaxValue; i++)
{
channel.BasicPublish(string.Empty, "mytest1", null, new byte[10]);
Console.WriteLine("{0} 推送成功", i);
Thread.Sleep(1000);
}
Console.Read();
}
}
最后我们看一下webui,可以清清楚楚的看到消息已经进入了rabbitmq集群啦。。。
好了,本篇就说这么多了,希望对您有帮助
相关文章:
体验Rabbitmq强大的【优先级队列】之轻松面对现实业务场景
RabbitMQ消息队列应用
原文地址:http://www.cnblogs.com/huangxincheng/p/6113891.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
- 搭建高可用的rabbitmq集群 + Mirror Queue + 使用C#驱动连接
- 搭建高可用的rabbitmq集群 + Mirror Queue + 使用C#驱动连接
- rabbitmq集群的高可用
- Rabbitmq集群高可用
- Rabbitmq集群高可用
- Rabbitmq集群高可用
- 高可用集群的搭建
- RabbitMQ 高可用集群搭建及电商平台使用经验总结
- RabbitMQ 高可用集群搭建及电商平台使用经验总结
- RabbitMQ 高级指南:从配置、使用到高可用集群搭建
- RabbitMQ 高可用集群搭建及电商平台使用经验总结
- 为OpenStack搭建高可用RabbitMQ集群(转)
- rabbitmq+haproxy+keepalived实现高可用集群搭建
- RabbitMQ 高可用:在 Windows 搭建镜像集群
- [高可用]Ubuntu搭建高可用的RabbitMQ(1)
- [高可用]Ubuntu搭建高可用的RabbitMQ(2)
- Rabbitmq集群高可用测试
- Rabbitmq集群高可用测试
- 八幅漫画理解使用JSON Web Token设计单点登录系统
- 如何用TypeScript开发微信小程序
- 在ASP.NET Core中使用百度在线编辑器UEditor
- 外媒:微信小程序顺应“APP中启动APP”的行业潮流
- 微软Ignite大会约起来
- 搭建高可用的rabbitmq集群 + Mirror Queue + 使用C#驱动连接
- Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持
- 缓存在大型网站架构中的应用
- .NET应用迁移到.NET Core--调查案例
- 利用 async & await 的异步编程
- ASP.NET Core 之 Identity 入门(三)
- ASP.NET Core Kestrel部署HTTPS
- .NET开源两年之后社区贡献如何
- 图片轮播