RabbitMQ是一个老牌的非微软的消息队列组件,通常来讲应该能知足中小型公司对消息队列生产的需求,平时咱们在.NET开发环境下运用它是可能会须要RabbitMQ.Client的SDK库,此库是官网提供,目前最新发布版本是v4.1.3。在咱们对接项目时有时须要碰到对接上的注意,随之而来感受对官方提供的SDK客户端还能够进行一次包装开发。git
Nuget安装命令:Install-Package RabbitMQ.Client.Wrapgithub
GitHub地址:https://github.com/rjf1979/RabbitMQ.Client.Wrap异步
Nuget命令:Install-Package RabbitMQ.Client.Wrapui
如下就是对包装后的代码示例: spa
string queueName = "queue-demo"; var client = Client.Build("admin", "123456", "VHostName", "192.168.xxx.xxx",5672); client.Publisher.QueueDeclare(queueName); string messageData = "test-" + DateTime.Now;
//支持异步发布 await mqClient.Publisher.Publish(queueName, messageData);
//一样Client对象能够复用订阅
var tag = client.Subscriber.Subscribe(queueName, message =>
{
Console.WriteLine($"Recevice Data > {message},Time > {DateTime.Now}");
return true;
});
Console.WriteLine($"Subscriber Tag > {tag} , Time > {DateTime.Now}");
若是须要异常事件记录日志
//发布者注册一个异常事件处理,此处的注册异常事件,只有在发生异常状况下会触发
client.Publisher.RegisterExceptionHandler((message, exception) => { //处理消息 //处理异常 });
须要对日志记录自定义化,只须要注册你本身的日志记录实现类code
class MyLogger:RabbitMQ.Client.Wrap.Interface.ILog { public void Info(string message, Exception exception = null, params object[] args) { //实现你的记录日志代码 } public void Warn(string message, Exception exception = null, params object[] args) { //实现你的记录日志代码 } public void Error(string message, Exception exception = null, params object[] args) { //实现你的记录日志代码 } public void Fatal(string message, Exception exception = null, params object[] args) { //实现你的记录日志代码 } public void Debug(string message, Exception exception = null, params object[] args) { //实现你的记录日志代码 //此日志会在#if DEBUG下会运行 } public void Trace(string message, Exception exception = null, params object[] args) { //实现你的记录日志代码 //此日志会在#if TRACE下会运行 } }
//把实现类注册进去对象
Logger.RegisiterLogger(new MyLogger());
好了,介绍到这里,你们若是有兴趣能够去nuget上安装运用,若是在使用当中有问题能够及时联系我,个人QQ在右上角的介绍里blog