内容简介:友情提示 安装好Rabbitmq-server,Erlang后,在vs中添加 Rabbitmq.client.建立两个控制台应用,实现单生产者单消费者的模式。 我对我的文章负责,发现好多网上的文章 没有实践,都发出来的,让人走很多弯路,如果你在我的文章中遇到无法实现,或者无法走通的。可以直接公众号:爱码农爱生活 留言。必定会再次复查原因。让每一篇 文章的流程都能顺利实现。
友情提示
我对我的文章负责,发现好多网上的文章 没有实践,都发出来的,让人走很多弯路,如果你在我的文章中遇到无法实现,或者无法走通的问题。可以直接在公众号《爱 码农 爱生活 》留言。必定会再次复查原因。让每一篇 文章都能顺利实现。道理讲明白 。原理讲清楚。代码必实现
快速阅读
安装好Rabbitmq-server,Erlang后,在vs中添加 Rabbitmq.client.建立两个控制台应用,实现单生产者单消费者的模式。
友情提示
我对我的文章负责,发现好多网上的文章 没有实践,都发出来的,让人走很多弯路,如果你在我的文章中遇到无法实现,或者无法走通的。可以直接公众号:爱码农爱生活 留言。必定会再次复查原因。让每一篇 文章的流程都能顺利实现。
1.安装rabittmq
提示没有安装elang,要先下载安装erlang
2.下载安装erlang
会自动打开Erlang的下载链接 地址。我的是win7 64位系统,所以我选择下面红框里的这个
3.Erlang和RabbitMq的下载地址备份
今天终于下载下来了。 为了避免以后因为网络问题下不下来,直接备份到百度云
- rabbitmq-server-3.7.15.exe 下载地址
链接: https://pan.baidu.com/s/1aTEtVwNvSV58gzbmLncQlA 提取码:3b1x
-
otp_win64_22.0 -erlang 下载地址
提取码:9oy8
4.OTP是啥
Open Telecom Platform的缩写,简单理解就是一个框架 ,主要是把通用部分代码和业务代码进行分离。具体想多了解的可以参考: https://www.cnblogs.com/john-d/archive/2010/04/16/1711276.html
5.OTP22的安装
安装OTP22 ,直接打开,安装到自己的程序目录就行。 一直next到结束 。
6.安装RabbitMq-server
直接打开,安装到自己的程序目录就行。 一直next到结束
7.官方的入门教程代码下载
https://github.com/rabbitmq/rabbitmq-tutorials
8.RabbitMQ 入门代码 Hello world
Rabbitmq是一个消息中间件,生产者生产消息放入队列中,消费者从队列中拿消息进行消费。
分别给两个项目安装RabbitMQ.client依赖包。 如果用这种方式安装的话,产生的项目是netcore的
好了,vs打开启动项目
不过遇到vs不能调试的错误了。,记得以前也遇到过这个问题,网上好多人说是把msvsmon.exe从别的地方复制一份就可以了,但是我的不行,最后是通过添加删除程序解决的。
感觉这个错误,好像会出现在多个vs版本的时候会容易出现混乱。
但是发现新建的程序台程序是可以使用的。
这个先不用管了直接转为传统的方式,vs打开项目,Nuget添加RabbitMq.client进行测试
重新在console控制台里操作吧。
9.vs中创建生产者
先安装RabbitMQ.Client
生产者代码:
注意:创建的链接如果是远程服务器,要换成远程服务器的IP地址,我们是用localhost在本地测试
创建完链接以后,再创建信道。大多数的api调用都是在信道中完成的。
最后声明一个队列,把我们要发送的消息发送出去。
消息的内容在队列中存的是了一个字节数组 ,我们一般用Encoding.UTF8.GetBytes
static void Main(string[] args)
{
var factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "hello",
durable: false, exclusive: false, autoDelete: false, arguments: null);
string message = "hello world";
var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish(exchange: "", routingKey: "hello", basicProperties: null, body: body);
Console.WriteLine("[x] sent {0}", message);
}
}
Console.WriteLine("");
Console.ReadLine();
}
10.消费者
消费者从消息队列中监听消息 ,要保持持续连接
代码:
注意:
1. Console.ReadLine();的位置,要放在channel代码块中。
- 流程还是建立连接-》创建信道-》定义队列=》
- 因为可能先启动消费者,所以队列也需要进行声明 一下。
- 在使用队列时,要保证队列必须存在。
static void Main(string[] args)
{
var factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "hello",
durable: false, exclusive: false, autoDelete: false, arguments: null);
//以下是区别生产者的
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (sender, e) =>
{
var body = e.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine("Received {0}", message);
};
channel.BasicConsume(queue: "hello", autoAck: true, consumer: consumer);
Console.WriteLine("");
Console.ReadLine();
}
}
}
运行效果
以上所述就是小编给大家介绍的《RabbitMQ入门学习系列(二),单生产者消费者》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Uberland
Alex Rosenblat / University of California Press / 2018-11-19 / GBP 21.00
Silicon Valley technology is transforming the way we work, and Uber is leading the charge. An American startup that promised to deliver entrepreneurship for the masses through its technology, Uber ins......一起来看看 《Uberland》 这本书的介绍吧!