NServicePlus 框架依赖
2019-12-18 16:21:17 6 举报
AI智能生成
NServiceBus 功能图
作者其他创作
大纲/内容
核心库(NServiceBus.Core)
发送消息
点对点(IComand)
endpointInstance.Send(this IMessageSession session, object message)
发布订阅(IEvent)
endpointInstance.Send(this IMessageSession session, object message)
同步回调(IMessage)
var reply = await endpointInstance.Request<ReplyMessage>(message, sendOptions)
.ConfigureAwait(false);
.ConfigureAwait(false);
接收消息
消息接收(实现接口 interface IHandleMessages<T>)
消息处理完成(Task.CompletedTask)
以事件或者命令消息继续流转消息(context.Publish)
消息驱动(Saga)
消息处理完成(Task.CompletedTask)
以事件或者命令消息继续流转消息(context.Publish)
消息序列化
Newtonsoft(NServiceBus.Newtonsoft.Json)
XmlSerializer(NServiceBus.Core))
路由配置(NServiceBus.Core)
定义路由(var routing = transport.Routing())
路由配置(routing.RouteToEndpoint(typeof(PlaceOrder), "Samples.StepByStep.Server");)
持久化
(内存持久化)endpointConfiguration.UsePersistence<InMemoryPersistence>();
Sql持久化
RavenDB 持久化
日志记录
内置NLog日志记录 也可以自定义扩展
集成其他第三方日志如Log4Net
消息过期设置
通过消息属性配置消息接收过期时间([TimeToBeReceived("00:01:00")])
依赖注入
Autofac
Unity
内置容器
Spring
安全
消息体加密
通过MessageEncryptor
(消息传入的方法)Task MutateIncoming(MutateIncomingTransportMessageContext context)
对 context.Body 进行自定义加密
(消息传出的方法)MutateOutgoing(MutateOutgoingTransportMessageContext context)
对 context.OutgoingBody 进行自定义解密
消息属性加密
可以对部分属性进行加密部分属性进行文本传输
对属性进行 EncryptedString 类型标记 则进行加密
自定义加密
继承 IEncryptionService 接口 重写加密和解密方法
可恢复性(当消息处理失败的时候)
异常重试
立即重试
延迟重试
端点公布为WCF 服务
消息处理管道
处理传入消息和发送传出消息时采取的一系列操作)
实现功能
数据总线 (DataBus))
有效负载单独存储在发送和接收都能访问的地方
消息其余部分进行序列化通过总线发送
消息属性加密
可恢复性
消息头(Header)标记操作
消息转发
消息转发
使用此功能可以将成功处理的消息从端点转发到特定的目标端点
消息审核
配置NServiceBus进行审核,它将捕获每条收到的消息的副本,并将其转发到指定的审核队列
NServiceBus分析器
会对一部分类进行异步调用的时候进行语法检查
消息字段验证(基于EF 的属性验注解(DataAnnotations)语法)
逻辑消息突变,验证消息是否合法(Logical message mutators)
输入消息(IMutateIncomingMessages)
输出消息(IMutateOutgoingMessages)
运输消息突变,传输过程中改变消息(Transport message mutators)
输入消息(IMutateIncomingTransportMessages)
输出消息(IMutateOutgoingTransportMessages)
桥接SignalR
MEF或反射进行定制
自定义反射
ICustomizeConfiguration(自定义配置)
IRunBeforeEndpointStart(节点开始前)
IRunAfterEndpointStart(节点开始后)
IRunBeforeEndpointStop(节点结束前)
IRunAfterEndpointStop(节点结束后)
IRunBeforeEndpointStart(节点开始前)
IRunAfterEndpointStart(节点开始后)
IRunBeforeEndpointStop(节点结束前)
IRunAfterEndpointStop(节点结束后)
托管扩展框架(MEF)(不是很理解)
消息吞吐量限制
端点同一时间 并发处理限制的数量,达到此限制后,端点将延迟处理其他消息
心跳包插件(NServiceBus.Heartbeat)
发送心跳(endpointConfiguration.SendHeartbeatTo("Particular.ServiceControl"))
依赖NServiceBus.Core 类库
端点度量插件(NServiceBus.Metrics和NServiceBus.Metrics.Control)
允许度量( var metrics = endpointConfiguration.EnableMetrics();)
发送度量信息( metrics.SendMetricDataToServiceControl("Particular.Monitoring", TimeSpan.FromMilliseconds(500));)
依赖NServiceBus.Core 类库
RabbitMq 插件(NServiceBus.Transport.RabbitMQ)
使用RabbitMq 传输( var transport = endpointConfiguration.UseTransport<RabbitMQTransport>();)
启用常规路由拓扑( transport.UseConventionalRoutingTopology();)
设置RabbitMq连接字符串(transport.ConnectionString("")))
依赖 RabbitMq 客户端插件(RabbitMQ.Client))
依赖NServiceBus.Core 类库
同步回调插件(NServiceBus.Callbacks)
启用回调(endpointConfiguration.EnableCallbacks())
依赖NServiceBus.Core 类库
消息必须要实现IMessage 接口
网桥插件(NServiceBus.Bridge)
通过NServiceBus.Bridge.Bridge.Between 和 And 方法进行服务总线桥接
客户端通过路由连接到网桥的两端(var bridge = routing.ConnectToBridge("Left");)
依赖NServiceBus.Core 类库
WCF 插件(NServiceBus.Wcf )
消息发送和接收操作公开为WCF服务
依赖NServiceBus.Core 类库
消息接收端 依赖 NServiceBus.Callbacks 类库
服务控制项目(ServiceControl-master)
(ServiceControl)
依赖 客户端引入 NServiceBus.Heartbeat 心跳包插件
实时发送心跳包
转发异常消息
发送当前消息的实例
通信接口:依赖Particular.ServiceControl队列进行数据交换
客户端通过引入NServiceBus 心跳插件 通过企业总线发送心跳插件到 RabbitMq 队列
ServiceControl 服务 通过企业总线接收到心跳插件信息
ServiceControl 服务通过WebApi的形式进行数据的公布
ServicePluse 通过WebApi 轮询请求的形式获取心跳数据
依赖ServiceControl.Config 安装包 通过RabbitMq 创建 Particular.ServiceControl 队列
依赖RavenDB 保存一些端点状态信息
依赖NServiceBus.Core 核心类库
ServiceControl.Monitoring
依赖客户端引入端点度量插件(NServiceBus.Metrics和NServiceBus.Metrics.Control)
实时发送端点处理情况的各个指标数据
通信接口:依赖 Particular.Monitoring 队列进行数据交换
客户端引入度量插件 通过企业总线发送 度量的指标数据到RabbitMq队列
ServiceControl.Monitoring 通过企业总线接收到 度量的指标数据
ServiceControl.Mpnitoring 通过WebApi的形式进行数据的公布
ServicePluse 通过WebApi 轮询请求的形式获取监控数据
依赖ServiceControl.Config 安装包 通过RabbitMq 创建 Particular.ServiceMonitoring 队列
依赖NServiceBus.Core 核心类库
ServiceControl.Audit(审核)
依赖客户端把消息 发送进入ServiceControl 队列进行消息审核
依赖NServiceBus.Core 核心类库
ServiceControl.Config(安装包 安装ServiceControl、Monitoring、Audit 服务 创建队列)
网站(ServicePluse)
依赖ServiceControl 提供WebApi (轮询请求方式)
客户端上线离线事件
心跳包显示
异常消息显示
异常消息重试
依赖ServiceControl.Monitoring 提供WebApi(轮询请求)
显示出各个监控指标
显示出端点的消息实例处理情况
依赖Node js 依赖Node js 提供的js 包
依赖 Git 依赖Git 提供的js 包
调试工具WPF(ServiceInsight-master)
依赖ServcieControl 提供WebApi 轮询请求
显示出消息处理流程
显示消息的详细信息 消息头 消息体
异常消息进行立即重试功能
0 条评论
下一页