我一直在尝试在NewRelic中为MassTransit设置自定义指标,类似于NServiceBus如何与NewRelic配合使用。看来这很容易使用NewRelic .Net Custom Transactions文档实现。使用MassTransit配置NewRelic(类似于NServiceBus)
到目前为止,从检查出GitHub上的MassTransit代码,我已经设法为MassTransit组合了一个简单的工具文件,但这只包含消息发送,但我真的希望收到消息,但我似乎无法找到第一个拦截与运输实施无关。
<?xml version="1.0" encoding="utf-8"?>
<extension xmlns="urn:newrelic-extension">
<instrumentation>
<tracerFactory metricName="MassTransit/Send">
<match assemblyName="MassTransit" className="MassTransit.Transports.SendEndpoint">
<exactMethodMatcher methodName="Send" parameters="!!0,System.Threading.CancellationToken" />
<exactMethodMatcher methodName="Send" parameters="!!0,MassTransit.Pipeline.IPipe`1[MassTransit.SendContext`1[!!0]],System.Threading.CancellationToken" />
</match>
</tracerFactory>
</instrumentation>
</extension>
,我试图创造相当于MassTransit一个NServiceBus仪器文件的例子如下:
<?xml version="1.0" encoding="utf-8"?>
<extension xmlns="urn:newrelic-extension">
<instrumentation>
<tracerFactory>
<match assemblyName="NServiceBus.Core" className="NServiceBus.InvokeHandlersBehavior">
<exactMethodMatcher methodName="Invoke" parameters="NServiceBus.Pipeline.Contexts.IncomingContext,System.Action" />
</match>
</tracerFactory>
<tracerFactory>
<match assemblyName="NServiceBus.Core" className="NServiceBus.Unicast.UnicastBus">
<exactMethodMatcher methodName="SendMessage" parameters="NServiceBus.Unicast.SendOptions,NServiceBus.Unicast.Messages.LogicalMessage" />
</match>
</tracerFactory>
</instrumentation>
</extension>
UPDATE
至于建议由克里斯·帕特森我已经更新到新的包,所以有一种方法,我可以在ReceivePipe
内挂钩。
我一直在努力,那么仪器这种方法,但没有成功,我可以在它的可能是如何看到过对所有的日志转弯时日志内仪器:
[Trace] 2015-10-19 09:08:45 Possibly instrumenting: (Module: D:\Liberis\Services\Liberis.Salesforce.Service\MassTransit.dll, AppDomain: Liberis.Salesforce.Service.exe)[MassTransit]MassTransit.Pipeline.Pipes.ReceivePipe.MassTransit.Pipeline.IPipe<MassTransit.ReceiveContext>.Send(MassTransit.ReceiveContext)
我也尝试更新的配置,下面以匹配以上,但仍然没有成功:
<?xml version="1.0" encoding="utf-8"?>
<extension xmlns="urn:newrelic-extension">
<instrumentation>
<tracerFactory name="NewRelic.Agent.Core.Tracer.Factories.BackgroundThreadTracerFactory" metricName="MassTransit/Receive">
<match assemblyName="MassTransit" className="MassTransit.Pipeline.Pipes.ReceivePipe.MassTransit.Pipeline.IPipe<MassTransit.ReceiveContext>">
<exactMethodMatcher methodName="Send" parameters="MassTransit.ReceiveContext" />
</match>
</tracerFactory>
</instrumentation>
</extension>
我也尝试使用nrconfig工具,但只有输出为ReceivePipe
类以下内容:
<match assemblyName="MassTransit" className="MassTransit.Pipeline.Pipes.ReceivePipe">
<exactMethodMatcher methodName=".ctor" parameters="MassTransit.Pipeline.IPipe`1<MassTransit.ReceiveContext>,MassTransit.Pipeline.IConsumePipe" />
</match>
我有一种感觉,我需要以不同的方式对它进行测试,因为该类隐式实现IPipe<ReceiveContext>
接口?
你可以尝试https://groups.google.com/forum/#!forum/masstransit-discuss – stuartd
添加到谷歌集团也只是增加可见性,将使它们都得到更新。谢谢 –
np。请注意,该小组的新海报已经过审核,因此可能不会立即显示。 – stuartd