rabbitmq 实战例子_RabbitMQ实战经验分享

本文分享了RabbitMQ实战经验,包括使用Exchange的topic模式发送消息,通过单个连接多通道接收消息,确保消息的高效发送与确认机制。详细介绍了消息的持久化、通道管理及错误消息处理,旨在帮助读者理解如何优化RabbitMQ应用。
摘要由CSDN通过智能技术生成

前言

最近在忙一个高考项目,看着系统顺利完成了这次高考,终于可以松口气了。看到那些即将参加高考的学生,也想起当年高三的自己。

下面分享下RabbitMQ实战经验,希望对大家有所帮助:

一、生产消息

关于RabbitMQ的基础使用,这里不再介绍了,项目中使用的是Exchange中的topic模式。

先上发消息的代码

private bool MarkErrorSend(string[] lstMsg)

{try{var factory = newConnectionFactory()

{

UserName= "guest",//用户名

Password = "guest",//密码

HostName = "localhost",//ConfigurationManager.AppSettings["sHostName"],

};//创建连接

var connection =factory.CreateConnection();//创建通道

var channel =connection.CreateModel();try{//定义一个Direct类型交换机

channel.ExchangeDeclare(

exchange:"TestTopicChange", //exchange名称

type: ExchangeType.Topic, //Topic模式,采用路由匹配

durable: true,//exchange持久化

autoDelete: false,//是否自动删除,一般设成false

arguments: null//一些结构化参数,比如:alternate-exchange

);//定义测试队列

channel.QueueDeclare(

queue:"Test_Queue", //队列名称

durable: true, //队列磁盘持久化(要和消息持久化一起使用才有效)

exclusive: false,//是否排他的,false。如果一个队列声明为排他队列,该队列首次声明它的连接可见,并在连接断开时自动删除

autoDelete: false,//是否自动删除,一般设成false

arguments: null);//将队列绑定到交换机

string routeKey = "TestRouteKey.*";//*匹配一个单词

channel.QueueBind(

queue:"Test_Queue",

exchange:"TestTopicChange",

routingKey: routeKey,

arguments:null);//消息磁盘持久化,把DeliveryMode设成2(要和队列持久化一起使用才有效)

IBasicProperties properties =channel.CreateBasicProperties();

properties.DeliveryMode= 2;

channel.ConfirmSelect();//发送确认机制

foreach (var itemMsg inlstMsg)

{byte[] sendBytes =Encoding.UTF8.GetBytes(itemMsg);//发布消息

channel.BasicPublish(

exchange:"TestTopicChange",

routingKey:"TestRouteKey.one",

basicProperties: properties,

body: sendBytes

);

}bool isAllPublished =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值