1.首先需要下载.net下的驱动类。rabbitmq.client.dll.安装后可以使用提供的文档。当然也可以直接从别的地方只下载rabbitmq.client.dll使用。
下载地址:http://www.rabbitmq.com/dotnet.html
文档和安装程序都有了。
2.然后建立项目导入引用
一、首先建立一个消息的发送者类Sender
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RabbitMQ.Client;
using RabbitMQ.Client.Content;
using System.Collections;
namespace Sender
{
/// <summary>
/// 向队列中写入一个消息
/// </summary>
public class ProduceMQ
{
static void Main(string[] args)
{
//服务器所在的主机ip
Uri uri = new Uri("amqp://192.168.1.99:8688/");
string exchange = "routing";//路由
string exchangeType = "direct";//交换模式
string routingKey = "rk";//路由关键字
//是否对消息队列持久化保存
bool persistMode = true;
ConnectionFactory cf = new ConnectionFactory();
cf.UserName = "gyg";//某个vhost下的用户
cf.Password = "123456";
cf.VirtualHost = "gyg001";//vhost
cf.RequestedHeartbeat = 0;
cf.Endpoint = new AmqpTcpEndpoint(uri);
//创建一个连接到具体总结点的连接
using (IConnection conn = cf.CreateConnection())
{ //创建并返回一个新连接到具体节点的通道
using (IModel ch = conn.CreateModel())
{
if (exchangeType != null)
{//声明一个路由
ch.ExchangeDeclare(exchange, exchangeType);
//声明一个队列
ch.QueueDeclare("q", true, false, false, null);
//将一个队列和一个路由绑定起来。并制定路由关键字
ch.QueueBind("q1", exchange, routingKey);
}
///构造消息实体对象并发布到消息队列上
IMapMessageBuilder b = new MapMessageBuilder(ch);
IDictionary target = b.Headers;
target["header"] = "hello world";
IDictionary targerBody = b.Body;
targerBody["body"] = "hello world";//这个才是具体的发送内容
if (persistMode)
{
((IBasicProperties)b.GetContentHeader()).DeliveryMode = 2;
//设定传输模式
}
//写入
ch.BasicPublish(exchange, routingKey, (IBasicProperties)b.GetContentHeader(), b.GetContentBody());
Console.WriteLine("写入成功");
}
}
}
}
}
二、创建一个接受者:receiver
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RabbitMQ.Client;
using RabbitMQ.Util;
namespace receiver
{
public class receiver
{
static void Main(string[] args)
{
// Uri uri = new Uri("amqp://127.0.0.1:8688/");
string exchange = "routing";
string exchangeType = "direct";
string routingKey = "rk";
string serverAddress ="amqp://127.0.0.1:8688/";
ConnectionFactory cf = new ConnectionFactory();
cf.Uri = serverAddress;
cf.UserName = "gyg";
cf.Password = "123456";
cf.VirtualHost = "gyg001";
cf.RequestedHeartbeat = 0;
//cf.Endpoint = new AmqpTcpEndpoint(uri);
using (IConnection conn = cf.CreateConnection())
{
using (IModel ch = conn.CreateModel())
{
//普通使用方式BasicGet
//noAck = true,不需要回复,接收到消息后,queue上的消息就会清除
//noAck = false,需要回复,接收到消息后,queue上的消息不会被清除,
//直到调用channel.basicAck(deliveryTag, false);
//queue上的消息才会被清除 而且,在当前连接断开以前,其它客户端将不能收到此queue上的消息
BasicGetResult res = ch.BasicGet("q", false/*noAck*/);
if (res!= null)
{
Console.WriteLine(System.Text.UTF8Encoding.UTF8.GetString(res.Body));
ch.BasicAck(res.DeliveryTag, false);
}
else
{
Console.WriteLine("无内容!!");
}
ch.Close();
}
conn.Close();
}
Console.ReadLine();
}
}
}
当然了这种方式是最简单的每次发送一个。接受者每次取得一个。
注意:这种方式发送者和接受者不能同时访问服务器。
- 大小: 18.8 KB
分享到:
相关推荐
C#开发的RabbitMQ主题订阅模式,读取mysql 数据发送和解析一体。 使用vs2019开发的,可以运行使用,在根据自己的需求加工即可,已经实现了定时读取mysql数据库数据转为json发送,消费者接受后解析的应用。可以自行...
C#调用RabbitMQ消息队列的实现例子,包括的内容: 1、C#调用RabbitMQ--控制台程序模式--发送端 2、C#调用RabbitMQ--控制台程序模式--接收端 3、C# Winform 调用RabbitMQ--接收端
C#开发的RabbitMQ队列模式,分为生产者和消费者两个程序,使用vs2019开发的,可以运行使用,在根据自己的需求加工即可,另外在本人另外的资源还提供主题订阅模式的,已经实现了定时读取mysql数据库数据转为json发送...
1. **易用性**:C# RabbitMQ Helper通过封装RabbitMQ的基本操作,如连接、创建通道、声明交换机、队列等,使开发者能够更快速地实现消息队列功能。 2. **连接管理**:该帮助类提供了便捷的连接工厂,能够自动管理和...
总结起来,这个C# Demo项目旨在教会我们如何在.NET环境中使用RabbitMQ进行消息传递,通过封装RabbitMQ.Client库,我们可以更高效地利用交换机功能,实现不同场景下的消息路由。通过学习这个项目,开发者能够更好地...
总之,RabbitMQ是C#开发中非常强大的消息中间件,它可以提供可靠、高效的消息传递服务,帮助开发者实现高可用性和可扩展性的系统设计。通过学习和实践,你可以充分利用RabbitMQ的特性,解决实际项目中的各种挑战。
ch.ExchangeDeclare(exchange, exchangeType);//direct必须要routingKey //声明一个队列 ch.QueueDeclare("q", true, false, false, null); //将一个队列和一个路由绑定起来。并制定路由关键字 ...
在本文中,我们将深入探讨C#中RabbitMQ的主题订阅模式及其源码实现。RabbitMQ是一个开源的消息代理和队列服务器,它基于AMQP(Advanced Message Queuing Protocol)协议,广泛应用于分布式系统中的异步任务处理和...
标题中的"Release_rabbitmq_C#源码_"表明这是一个关于RabbitMQ的C#源代码发布版本,可能包含了实现RabbitMQ在C#环境中使用的示例或者库。RabbitMQ是一个开源的消息代理和队列服务器,广泛应用于分布式系统中,用于...
本主题聚焦于如何利用WebSocket技术与RabbitMQ结合,实现实时消息传递并将其展示在Web页面上。WebSocket是一种在客户端和服务器之间建立长连接的协议,允许双向通信,而RabbitMQ则是一个强大的开源消息代理,它使用...
在C#环境下,我们可以使用RabbitMQ的.NET客户端来与RabbitMQ服务器进行交互,包括创建生产者和消费者。 本资源提供的“RabbitMQ消费者C#源码”是一个简单的控制台应用程序,用于接收由RabbitMQ生产者发送的消息。这...
**C#后台RabbitMQ Demo** 是一个针对.NET开发者的学习资源,旨在教授如何在C#环境中使用RabbitMQ实现消息队列的基本功能。RabbitMQ是一个开源的消息代理和队列服务器,广泛应用于分布式系统中,用于解耦生产和消费...
本篇将详细讲解如何在C#中对RabbitMQ进行封装,以实现高效的连接管理和资源优化。 首先,理解RabbitMQ的基本概念是至关重要的。消息队列是RabbitMQ的核心,它们存储和转发消息。生产者是发送消息到队列的组件,而...
本示例将聚焦于如何使用C#语言与RabbitMQ进行集成,以实现服务器的连接和基本的发送与接收消息功能。 首先,我们要了解RabbitMQ的基本概念。RabbitMQ基于AMQP(Advanced Message Queuing Protocol)协议,它提供了...
在Windows环境下,安装和使用RabbitMQ以及C#进行消息队列操作是现代软件开发中的常见任务,尤其在分布式系统和微服务架构中。RabbitMQ是一个开源的消息代理,它支持多种消息协议,包括AMQP(Advanced Message ...
本篇将详细介绍C#版本下如何构建高性能的RabbitMQ帮助类,以便更好地利用这一强大的工具。 首先,我们需要理解RabbitMQ的基本概念。RabbitMQ是一个基于AMQP(Advanced Message Queuing Protocol)协议的消息代理,...
本篇文章将深入探讨如何使用RabbitMQ实现消息插队,以"多人投资"为例,重点讲解手动投资与自动投资的消息处理流程。 首先,我们需要理解RabbitMQ的基本概念。在RabbitMQ中,生产者(Producer)负责发布消息,消费者...
总结起来,RabbitMQ在抢购秒杀服务中的应用主要是通过消息队列实现请求的异步处理,减轻了数据库的压力,提高了系统在高并发情况下的响应速度和稳定性。同时,通过合理的消息确认机制和并发控制策略,还能保证数据的...
C#调用RabbitMQ实现消息队列的示例代码 C#调用RabbitMQ实现消息队列的示例代码是指通过C#语言调用RabbitMQ实现消息队列的示例代码。本文将详细介绍C#调用RabbitMQ实现消息队列的示例代码,并对其进行详细的解释。 ...
在.NET Core中,使用RabbitMQ可以实现可靠的消息传递,提升系统的可扩展性和容错性。通过定义交换机、队列和路由键,我们可以灵活控制消息的路由和处理。结合Web API,RabbitMQ可以作为一个强大的中间件,帮助我们...