架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1040|回复: 1

[插件库] 消息队列收发消息Demo

[复制链接]
发表于 2019-5-30 22:58:30 | 显示全部楼层



前言


项目中,有些地方为了保证信息处理的准确性,会使用到消息队列。比如:高并发情况下,网站进行数据处理。今天本文记录RabbitMQ简单的一个demo。在进入本文之前,RbMQ环境必须提前安装好(因为我本机RbMQ环境之前安装好了,怕卸载造成一些注册表清不干净的问题,这里就不记录环境的安装)。



环境&工具



>Windows 10 系统
>RabbitMQ环境服务
>VS 2017



正文



1:新建两个控制台应用程序,分别为 “RabbitMQClient” 和 “RabbitMQServer”


1-1.png


2:引用 “RabbitMQ.Client” dll

3:在RabbitMQClient 项目,Program.cs中,贴入以下代码



4:在RabbitMQServer项目,Program.cs中,贴入以下代码



5:F5 启动 RabbitMQServer 项目,在控制台中,输入信息,回车。

5-1.png

6:不要关闭 RabbitMQServer 项目控制台,右击  RabbitMQClient  项目——> “调试”——>“启动新实例”

6-1.png


6-2.png

可在右边 RabbitMQServer 控制台里面输入信息,即可显示在左边。RabbitMQServer 项目进行消息的生产。RabbitMQClient项目则对消息进行处理(消费)。这就是消息队列中的生产者和消费者。代码里还涉及到路由,信道。

在消息生产者这边,把要处理的信息丢到消息队列中。消费者这边在接收到消息后,可对这条数据进行相应的处理。

环境安装好的话,本地默认的端口地址应该是 http://localhost:15672/#/queues。直接 guest 账户访问,也可自己敲命令行配置账户和相应的权限。

6-3.png

刚才在RabbitMQServer 控制台输入的信息,其实都先存在 消息队列中,可先将 RabbitMQClient 窗口关闭,再在窗口输入几条信息,观察消息队列,可看到队列中有三条数据。

6-4.png

当我们RabbitMQClient  窗口启动,消息在正常接收后,会自动在消息队列中消失。这个是消息队列的确认机制,一旦准确接收到了我们需要的信息,消费者这边会向消息队列返回一个状态,用来销毁这条消息。如果消费者没有接收到消息,或者出现异常,没有返回这个状态值,那么这条消息将会一直在队列中,直到消息被正常的消费,这样确保了消息的准确性。



尾声




很遗憾,在项目中我用到消息队列的地方很少。没有进行深入的了解,只会基础的使用。

上面demo 里面有一个坑,在RabbitMQClient 里面 RbMQ 的连接 套了一层 using。因为是异步线程,这样会造成程序跑的时候,还没接收完消息,就把RbMQ Connection 给回收了,会报错。处理方法是:去掉using,手动释放。













上一篇:"npm ERR! Error: EPERM: operation not permitted"问题解决
下一篇:九种常规的视觉软件介绍
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2019-5-31 09:12:21 | 显示全部楼层
最好把文章的 demo 源码,上传到:https://down.itsvse.com/
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2020-7-11 22:27

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表