三.RabbitMQ在C#程序中初步使用
RabbitMQ应用C#程序
在前面给大家说到过消息队列其实就是一个或多个进程往队列里面去写消息,然后可以有一个或者多个进程在消息队列里面获取消息进行处理:如下图
根据上图展示的,应该有一个消息写入队列的进程,然后有一个进程到队列里面去获取消息进行处理;
RabbitMQ在应用在C#程序,其实RabbitMQ提供的有对应的客户端程序包;
我这里先准备了两个AspNetCore的控制台分别命名为:
AspNetCore.RabbitMQ.MessageProducer,
AspNetCore.RabbitMQ.MessageConsumer_01;
两控制台引入RabbitMQ.Client的程序包,当前版本:s5.1.2版本,然后基于当前的RabbitMQ.Client程序包就可以实现C#和RabbitMQ的配合使用了
AspNetCore.RabbitMQ.MessageProducer充当的就是消息生产者,负责把消息写入到队列中去;
AspNetCore.RabbitMQ.MessageConsumer_01就是上图中展示的消费者,专门从队列中获取消息然后处理的;
那生产者和消费者和RabbitMQ是分别独立开的进程,如果需要和RabbitMQ交互写入,读取消息,那就需要链接;
RabbitMQ.Client提供有可以来创建链接的工厂一Connection Factory;
第一步;创建链接:必须要有连接,生产者才能往队列里写入消息;
然后可以连接RabbitMQ中去;如图
就可以链接到RabbitMQ中去了; 注:RabbitMQ服务要正常启动;环境无异常
第二步:发送消息,发送消息需要指定路由,如下图
那么到现在其实从发送消息方到队列这个过程就基本Ok了。下面我们来定义从队列取消息的进程;
第三步:定义消费消息进程;
AspNetCore.RabbitMQ.MessageConsumer_01其实就是,同样的也需要先链接到RabbitMQ队列中去;如下图
就可以接受到消息了;
第四步:联调测试,分别启动消息写入控制台,消息读取控制台;这时候你会看到如下图,
每写入一条,消息就会被获取一条;这就是一个RabbitMQ在C#端控制的简单实现;
那能不能一个进程写入,多个进程来读取呢?当然可以,下面就来实现一下;
第五步:再定义一个消息读取控制台:
AspNetCore.RabbitMQ.MessageConsumer_02,定义接受消息的代码
和AspNetCore.RabbitMQ.MessageConsumer_01的代码一样;
和下图一样。这里展示的是第二个读取队列消息的进程,然后我们再来测试一下.
第六步:先启动两个获取消息的进程:然后启动发送消息的进程。
此时我们会发现我们定义多个接受消息的进程,一个写入消息的进程,两个接受消息的进程,写入的消息,被多个读取的进程给瓜分了;
这就是一个RabbitMQ在AspNetCore环境下,的一个初步使用;