我一直在嘗試在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