Does NServiceBus 6.0 already support ServiceInsights

250 views Asked by At

I would like to "connect" my NServiceBus 6.0 application to ServiceInsight. Therefore I install the Nsb6.Heartbeat, Nsb6.CustomChecks and Nsb6.SagaAudit dlls with NuGet Package Manager to my solution. In the past this was enought configuration and my messages and saga details appeared in ServiceInsight. However now with version 6 (...still in beta) this doesn't work any more and I get the following error message:

2016-06-06 13:17:34.385 WARN ServiceControl.Plugin.Nsb6.Heartbeat.Heartbeats Unable to send heartbeat to ServiceControl: System.ArgumentNullException: Der Wert darf nicht NULL sein. Parametername: destination bei NServiceBus.Guard.AgainstNullAndEmpty(String argumentName, String value) in C:\Build\src\NServiceBus.Core\Utils\Guard.cs:Zeile 36.
bei NServiceBus.Routing.UnicastAddressTag..ctor(String destination) in C:\Build\src\NServiceBus.Core\Routing\UnicastAddressTag.cs:Zeile 15.
bei ServiceControl.Plugin.ServiceControlBackend.d__1.MoveNext() in C:\Build\src\ServiceControl.Plugin.Nsb6.Heartbeat\ServiceControlBackend.cs:Zeile 54. --- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde --- bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) bei ServiceControl.Plugin.Nsb6.Heartbeat.Heartbeats.HeartbeatStartup.d__7.MoveNext() in C:\Build\src\ServiceControl.Plugin.Nsb6.Heartbeat\Heartbeats.cs:Zeile 148.

Sorry the message contains german terms - but you might get the idea of the exception. Do I have to provide some addittional information about the destination?

The versions I am using:

  • NServiceBus 6.0.0-beta3

  • NServiceBus.Host 7.0.0-beta2

  • ServiceControl.Plugin.Nsb6.Heartbeat 1.0.0-beta2

  • ServiceControl 1.16.0

  • ServiceInsight 1.5.6

And this is my endpoint configuration:

endpointConfiguration.UseSerialization<JsonSerializer>();
endpointConfiguration.EnableInstallers();
endpointConfiguration.SendFailedMessagesTo("error");            
endpointConfiguration.AuditProcessedMessagesTo("audit");
endpointConfiguration.UsePersistence<InMemoryPersistence>();
var transport = endpointConfiguration.UseTransport<MsmqTransport>();
transport.Transactions(TransportTransactionMode.TransactionScope);
1

There are 1 answers

1
marco birchler On

I could finally fix the issue by adding the following configuration to my app.config file:

 <appSettings>
   <add key="ServiceControl/Queue" value="particular.servicecontrol"/>
 </appSettings>

I found the solution for me when I also added the ServiceControl.Plugin.Nsb6.SagaAudit dll. Now there was not any more just a warning now there was an error:

2016-06-07 13:58:23.008 ERROR NServiceBus This endpoint is unable to contact the ServiceControl Backend to report endpoint information. You have the ServiceControl plugins installed in your endpoint. However, please ensure that the Particular ServiceControl service is installed on this machine, or if running ServiceControl on a different machine, then ensure that your endpoint's app.config / web.config, AppSettings has the following key set appropriately: ServiceControl/Queue. For example: Additional details: {0} System.ArgumentNullException: Der Wert darf nicht NULL sein. Parametername: destination bei NServiceBus.Guard.AgainstNullAndEmpty(String argumentName, String value) in C:\Build\src\NServiceBus.Core\Utils\Guard.cs:Zeile 36. bei NServiceBus.Routing.UnicastAddressTag..ctor(String destination) in C:\Build\src\NServiceBus.Core\Routing\UnicastAddressTag.cs:Zeile 14. bei ServiceControl.Plugin.ServiceControlBackend.d__6.MoveNext() in C:\BuildAgent\work\da7163d5242e9ea8\src\Shared\ServiceControlBackend.cs:Zeile 159.

The error text is missleading because it actually states that the configuration is only needed if the ServiceControl is installed on another machine. Obviously this is not the case and you have to add the configuration even if you connect to ServiceControl on localhost.