一、概念
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。(很多信息网上都有,大伙可以自己去看看)

二、Linux安装RabbitMQ(基于CentOS7)

1、erlang安装

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

  

2、安装RabbitMQ

wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.8/rabbitmq-server-3.6.8-1.el7.noarch.rpm
yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm
service rabbitmq-server start

  

3、配置RabbitMQ配置文件

   首次安装需要自己创建配置文件

cd /etc/rabbitmq/
vim rabbitmq.config

   写入以下内容:

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

这样就可以用guest进行远程访问了,更加详细的信息,大家自己再百度百度,如何不能访问的话,可以尝试关闭防火墙再试试

4、开启管理UI

rabbitmq-plugins enable rabbitmq_management

开启后访问以下地址:

http://192.168.10.97:15672/#/

通过这个UI工具可以更好的管理RabbitMQ

三、.Net下开发RabbitMQ

1、配置Exchange以及Queue

  新建一个exchange,如下 所示:

  新建一个queue,如下所示;

  创建exchange以及queue的对应关系:

2、接收端代码

        private void Form2_Load(object sender, EventArgs e)
{
var factory = new ConnectionFactory();
factory.UserName = "guest";
factory.Password = "guest";
factory.HostName = "192.168.10.97";
factory.AutomaticRecoveryEnabled = true;
var connection = factory.CreateConnection(); var channel = connection.CreateModel(); var consumer = new RabbitMQ.Client.Events.EventingBasicConsumer(channel);
consumer.ConsumerTag = "11111111111";
consumer.Received += Consumer_Received;
channel.BasicConsume(queue: "hello",
noAck: true,
consumer: consumer);
} private void Consumer_Received(object sender, RabbitMQ.Client.Events.BasicDeliverEventArgs e)
{
MessageBox.Show(Encoding.UTF8.GetString(e.Body));
}

  

 PS:特别注意AutomaticRecoveryEnabled树形必须设置为true,否则再接收到一次数据后,后面就不会再接收到数据了(被这个坑了一天)

3、发送端代码

 private void button1_Click(object sender, EventArgs e)
{
var factory = new ConnectionFactory();
factory.UserName = "guest";
factory.Password = "guest";
factory.HostName = "192.168.10.97";
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.BasicPublish("hello_e", "hello", null, Encoding.UTF8.GetBytes(DateTime.Now.ToString()));
}
}
}

 4、程序运行效果

点击按钮之后,弹出了messagebox,证明数据监听到了,有些时候大概有几秒的延迟,不过本身异步处理主要是保证最终一致性,所以也无所谓

源码下载地址:https://pan.baidu.com/s/1nvhp0MH

如部分文档有侵权,请联系:568898448

参考文档:安装过程参考http://www.cnblogs.com/uptothesky/p/6094357.html

作者: 因致研发官方博客

出处: http://www.cnblogs.com/yizitrd/>

关于公司:专注制造业MES系统,也开始涉足工业互联网相关

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(hongjb@yizit.com)咨询.

最新文章

  1. Eclipse swt开发环境搭建
  2. Python_Day9_Socket编程
  3. php做登录注册页面及加载
  4. npm常用命令小结
  5. socket调用流程的函数及数据结构
  6. C++: getline函数
  7. NandFlash详述【转】
  8. java 内部类的使用
  9. android4.0 HttpClient 以后不能在主线程发起网络请求
  10. VS2010编写动态链接库DLL和单元测试,转让DLL测试的正确性
  11. Linux安装Firefly
  12. 自签名的https证书是不安全的
  13. JSP常见的7个动作指令
  14. 直接内存访问(DMA)
  15. 物流的纯css实现方法
  16. prometheus 配置介绍
  17. 【repost】前端学习总结(二十三)——前端框架天下三分:Angular React 和 Vue的比较
  18. [Java in NetBeans] Lesson 05. Method/function
  19. Canvas:飞机大战 -- 游戏制作
  20. 20155316 Exp1 PC平台逆向破解(5)M

热门文章

  1. js琐碎知识点
  2. css属性background
  3. Hadoop-HA配置详细步骤
  4. linux学习系列三
  5. Javascript- Javascript学习
  6. C++判断一个文件是否可以正确打开的代码
  7. html布局 左右固定,中间只适应,三种方法实现
  8. Echarts 地图(map)插件之 鼠标HOVER和tooltip自定义数据
  9. 三 Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性
  10. Redis命令参考之复制(Replication)