17,EasyNetQ-替换EasyNetQ组件
EasyNetQ是一个由小型组件组成的库。 当你写:
var bus = RabbitHutch.CreateBus("host=localhost");
...静态方法CreateBus使用一个微小的内部IoC容器来组装这些组件。 CreateBus方法的重载允许您访问组件注册,以便您可以提供您自己的任何EasyNetQ依赖关系的版本。 签名看起来像这样:
public static IBus CreateBus(string connectionString, Action<IServiceRegister> registerServices)
IServiceRegister接口提供了一种方法:
public interface IServiceRegister
{
IServiceRegister Register<TService>(Func<IServiceProvider, TService> serviceCreator) where TService : class;
}
因此,要基于IEasyNetQLogger注册您自己的记录器,您需要编写以下代码:
IEasyNetQLogger logger = new MyLogger(); // note the use of IEasyNetQLogger not var.
var bus = RabbitHutch.CreateBus(connectionString,
serviceRegister => serviceRegister.Register(serviceProvider => logger));
Register方法的参数Func <IServiceProvider,TService>是一个函数,它在CreateBus将这些组件拉到一起以生成一个IBus实例时运行。 IServiceProvider看起来像这样:
public interface IServiceProvider
{
TService Resolve<TService>() where TService : class;
}
这使您可以访问EasyNetQ提供的其他服务。 例如,如果您想用您自己的ISerializer实现来替换默认的序列化程序,并且想要通过引用记录器来构建它,则可以这样做:
var bus = RabbitHutch.CreateBus(connectionString, serviceRegister =>
serviceRegister.Register<ISerializer>(
serviceProvider => new MySerializer(serviceProvider.Resolve<IEasyNetQLogger>())));
请注意,我们必须在Register方法上使用明确的类型参数,以便内部IoC容器知道我们正在替换哪个服务。
要查看组成IBus实例的组件的完整列表,以及它们的组装方式,请查看ComponentRegistration类。
您可以通过IAdvancedBus的Container属性访问容器。 这使您可以访问内部组件:
var serializer = bus.Advanced.Container.Resolve<ISerializer>();
要用您自己选择的IoC容器替换内部容器,请参阅使用替代DI容器
17,EasyNetQ-替换EasyNetQ组件的更多相关文章
- 第17讲- UI常用组件之ImageView图片浏览
第17讲 UI常用组件之ImageView图片浏览 二.图片浏览ImageView ImageView就是一个用来显示图片的视图: ImageView常见属性 常见属性 对应方法 说明 android ...
- Angular之替换根组件
一 在index.html中,替换根组件选择器 <!doctype html> <html lang="en"> <head> <meta ...
- Flutter实战视频-移动电商-17.首页_楼层组件的编写技巧
17.首页_楼层组件的编写技巧 博客地址: https://jspang.com/post/FlutterShop.html#toc-b50 楼层的效果: 标题 stlessW快速生成: 接收一个St ...
- Abp Vnext Blazor替换UI组件 集成BootstrapBlazor(详细过程)
Abp Vnext自带的blazor项目使用的是 Blazorise,但是试用后发现不支持多标签.于是想替换为BootstrapBlazor. 过程比较复杂,本人已经把模块写好了只需要替换掉即可. 点 ...
- vue.js(17)--vue的组件切换
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- activiti-explore(activiti5.17) 替换数据库
http://blog.csdn.net/xiangwangye66/article/details/46943301
- 简单易用的.NET免费开源RabbitMQ操作组件EasyNetQ解析
对于目前大多的.NET项目,其实使用的技术栈都是差不多,估计现在很少用控件开发项目的了,毕竟一大堆问题.对.NET的项目,目前比较适合的架构ASP.NET MVC,ASP.NET WebAPI,ORM ...
- 使用EasyNetQ组件操作RabbitMQ消息队列服务
RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现,是实现消息队列应用的一个中间件,消息队列中间件是分布式系统中重要的组件,主要解决应用耦合, ...
- .NetCore中简单使用EasyNetQ
前言 我们在.Net中使用RabbitMQ,最原始的就是基于RabbitMQ.Client进行编码,在这个过程中我们需要通过代码约定和维护队列,Exchange等.如果是自行编码封装通用型的Rabbi ...
- EasyNetQ介绍
EasyNetQ 是一个容易使用,坚固的,针对RabbitMQ的 .NET API. 假如你尽可能快的想去安装和运行RabbitMQ,请去看入门指南.EasyNetQ是为了提供一个尽可能简洁的适用与R ...
随机推荐
- IMU 预积分推导
给 StereoDSO 加 IMU,想直接用 OKVIS 的代码,但是有点看不懂.知乎上郑帆写的文章<四元数矩阵与 so(3) 左右雅可比>提到 OKVIS 的预积分是使用四元数,而预积分 ...
- Bootstrap2.x与Bootstrap3.x的区别
做项目时,有时也会参考别的案例的优秀之处.在用Bootstrap的时候,发现很多项目代码都有区别,在<div>布局class上,有用.span*,有用.col-md-*,实际上是Boots ...
- 【转】Python介绍
[转]Python介绍 本节内容 Python简史 Python是一门什么样的语言? Python的优点与缺点 Python解释器 一.Python简史 历史背景 在20世纪80年代,IBM和苹果已经 ...
- 一文看懂汽车电子ECU bootloader工作原理及开发要点
随着半导体技术的不断进步(按照摩尔定律),MCU内部集成的逻辑功能外设越来越多,存储器也越来越大.消费者对于汽车节能(经济和法规对排放的要求)型.舒适性.互联性.安全性(功能安全和信息安全)的要求越来 ...
- Ubuntu 16.04配置国内高速apt-get更新源【转】
转自:https://blog.csdn.net/twang0x80/article/details/79782753 Ubuntu 16.04下载软件速度有点慢,因为默认的是从国外下载软件,那就更换 ...
- CAS 策略已被 .NET Framework 弃用
背景 本来想这里有啥写的,就算了吧.突然看到dev了,我的天啊,这个.net大神,坑了多少开发人员了.功能太强大,以至于后来很长时间我都不知道jquery.当时为了操作dev,为了实现一个功能,都把官 ...
- 初识神经网络NeuralNetworks
1.神经网络的起源 在传统的编程方法中,我们通常会告诉计算机该做什么,并且将一个大问题分解为许多小的.精确的.计算机可以轻松执行的任务.相反,在神经网络中,我们不告诉计算机如何解决问题,而是让计算机从 ...
- Go语言规格说明书 之 类型(Types)
go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,完整的介绍Go语 ...
- ThinkPHP 3.1,3.2中对IN和BETWEEN正则匹配不当导致的一个SQLi
// where子单元分析 protected function parseWhereItem($key,$val) { $whereStr = ''; if(is_array($val)) { if ...
- Python-css高级
1. 伪类和伪元素 1. 伪类 1. :link 2. :visited 3. :hover (重要) 4. :active 5. :focus(input标签获取光标焦点) 2. 伪元素 1. :f ...