本系列文章均来自官网原文,属于个人翻译,如有雷同,权当个人归档,忽喷.

.NET/C# RabbitMQ 客户端下载地址:https://github.com/rabbitmq/rabbitmq-dotnet-client

关于RabbitMQ在windows 平台的安装和管理配置请参考:http://www.cnblogs.com/grayguo/p/5300776.html

确保安装成功:

RabbitMQ 原文译1.2--"Hello Word"

这部分会写两个程序,一个消息生产者发送一个消息;一个消费者接受消息然后输出到控制台,在这个过程中我会忽略一些.Net的细节,把注意力放在这个简单的"hello word" 消息程序上。

在下图中"P" 是我们的生产者,"C" 是我们的消费者,两者之间的中间这是我们的消息队列--一个隐藏在消费者后面的消息缓冲区.

RabbitMQ 原文译1.2--"Hello Word"

RabbitMQ 原文译1.2--"Hello Word"

创建一个Send.cs 来写发送程序,发送方会连接RabbitMQ 服务器,发送消息,然后退出.

 

class Send
{
    public static void Main()
    {
        var factory = new ConnectionFactory() { HostName = "192.168.15.128" };
        using (var connection = factory.CreateConnection())
        {
            using (var channel = connection.CreateModel())
            {
                ...
            }
        }
    }
}

首先需要创建一个连接工厂去连接我们的RabbitMQ服务器,这里我们使用RabbitMQ-dotnet-client 提供的类库来进行回话的创建.

这里的这里的connection 连接已经为我们把socket 连接, 版本协议和认证会话,都已经为我们做了.这里我连接的服务器是"192.168.15.128"(由于我把RabbitMQ的测试环境搭栽了一台虚拟机上,如果是本机可写成"localhost"),直接指定服务器IP即可.

然后我们在这个连接上创建了一次回话(channel),我们所做的大部分Api操作都要基于会话进行。

为了发送消息,我们需要创建一个队列用来存储消息,然后可以把我们的消息发送到该队列上,创建队列代码:

channel.QueueDeclare(queue: "hello", durable: false, exclusive: false, autoDelete: false,arguments: null);
//queue:队名名
//durable:是否持久化
 //exclusive:是否排他
 //autoDelete:自动删除

注:创建队列的API是具有幂等性的--即只有当所指定的队列不存在时才会去创建.

然后发送消息:

 string message = "Hello World!";
 var body = Encoding.UTF8.GetBytes(message);
 channel.BasicPublish(exchange: "",routingKey: "hello", basicProperties: null, body: body);

发送的消息必须是字节数组,我们可以自己指定所需的编码

完整代码如下:

public class Send
    {
        public static void Main()
        {
            var factory = new ConnectionFactory() { HostName = "192.168.15.128" };
            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(" Press [enter] to exit.");
            Console.ReadLine();
        }
    }
View Code

相关文章:

  • 2021-07-06
  • 2022-12-23
  • 2021-09-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-04
  • 2021-09-09
  • 2022-02-24
猜你喜欢
  • 2022-12-23
  • 2021-09-02
  • 2022-12-23
  • 2022-01-21
  • 2022-12-23
  • 2022-12-23
  • 2021-11-16
相关资源
相似解决方案