C# Queue与RabbitMQ的爱恨情仇(文末附源码):Q与MQ消息队列简单应用(二)

上一章我们讲了队列( Queue),这一章我们讲Message Queue消息队列,简称MQ。 定义:   MQ是MessageQueue,消息队列的简称(是流行的开源消息队列系统,利用erlang语言开发)。MQ是一种应用程序对应用程序的通信方法。 应用程序通过读写入队和出队的消息来通信,无需专用连接来链接它们。 消息传递是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,一般应用于远程过程调用的技术。 排队指的是应用程序通过队列来通信。应用队列避免接收和发送数据的同时进行。 特点:   MQ是消费者-生产者模型的代表。一端往消息队列中写入消息,另一端可以读取或者订阅队列中的消息。 MQ遵循的是AMQP协议(高级消息队列协议:使得遵从该规范的客户端应用和消息中间件服务器的全功能互操作成为可能)的具体实现和产品。 应用:   在使用MQ时,我们不需要实时的返回信息。获取信息和返回信息进行异步处理。 例如:在项目中,我们需要从汽车系统中利用CAN总线实时的获取汽车的相关信息,但是没有必要给汽车返回信息。 如,获取汽车的轮胎气压,但是我们不需要给汽车一个返回的信息或结果。 C#项目要利用RabbitMQ来获取实时数据的话,需要先安装客户端的库文件:RabbitMQ.Client.dll,下面有提到。 备用下载路径: 链接:https://pan.baidu.com/s/1zcQmPnBF7WcD8sqV4W54pw 提取码:6962 写在前面:…

.NET中异常类(Exception)

  异常:程序在运行期间发生的错误。异常对象就是封装这些错误的对象。   try{}catch{}是非常重要的,捕获try程序块中所有发生的异常,如果没有捕获异常的话,程序运行的线程将会挂掉,更严重的是这些错误有可能会直接抛给用户,让用户看到。所以说在程序的最外层必须要有捕获异常的程序。这样至少确保程序的正常运行。还有一点就是,捕获异常之后需要记录下来,这样对于我们排查问题也是有帮助的。   什么情况下,不需要捕获异常呢?   1.发生此类错误的时候,就没必要执行之后的代码的时候,就可以抛出异常了。   2.在开发封装类,并且发生的错误需要让调用者知道的时候,就可以抛出异常了。 Exception类:   翻译自:https://msdn.microsoft.com/en-us/library/804f22sf(v=vs.110).aspx 构造函数:4个重载,Exception()、Exception(SerializationInfo, StreamingContext)、Exception(String)、Exception(String, Exception)。 Exception():创建一个异常的实例,异常实例中所有的字段都需要手动再加,初次创建都是默认值。 Exception(SerializationInfo, StreamingContext):暂时不懂。 Exception(String message):创建一个带有错误信息的异常实例。message表示异常信息。 Exception(String message, Exception ex):创建一个异常实例,并为该异常赋值错误信息,如果有内部异常,也一起传进去。如果没有内部异常就传输null。 属性 属性名 类型…

C# 不安装Oracle客户端情况下,如何连接到Oracle数据库

简介:   在我们开发应用场景经常碰到需要连接Oracle数据库,这也是相当常见的一种情况。一般.Net环境连接Oracle数据库,可以通过TNS/SQL.NET 配置文件,而 TNS 必须要 Oracle 客户端。  场景一、很多在使用微软自带的Using System.Data.OracleClient(据说现在已经不维护的)的时候,在没有安装Oracle客户端的服务器上运行,会提示你需要安装Oracle客户端,不过在Oracle 12以后的版本都很少使用这种方法了。  场景二、也有很多人直接调用了Oracle客户端下的Oracle.DataAccess.dll(一般在Oracle安装目录下的product\11.2.0\dbhome_1\ODP.NET\bin\2.x当中)。但是在程序运行时,碰到最多的情况可能就是,Oracle.DataAccess.Client.OracleException报错:提供程序与此版本的 Oracle 客户机不兼容(一般检查下本机的Oracle的Oracle.DataAccess.dll和你引用的Oracle.DataAccess.dll版本是不是一致的,替换相同的版本就能解决此问题)。   下面主要介绍,不需要安装Oracle客户端,通过最新的ODP.Net方式(Oracle.ManagedDataAccess.dll)直接连接Oracle数据库。 Oracle全托管驱动Oracle.ManagedDataAccess   Oracle官网为C#提供了全新的ODP.Net方式的全托管驱动Oracle.ManagedDataAccess,并且还 EF 支持分布式事务,官网下载地址(地址还挺不好找的,下载的时候需要Oracle账户才行,没有的话注册一个也挺快的)—传送门:http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html,如图所示:   下载解压找到我们需要的Oracle.ManagedDataAccess.dll,如果你使用EF框架,则选择EF6当中的dll,如图所示:   将Oracle.ManagedDataAccess.dll引用到我们的项目当中,然后检验下链接Oracle是否连接成功。…