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);
I could finally fix the issue by adding the following configuration to my app.config file:
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:
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.