0
votes

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
Does Service Pulse pick up the serviceControl endpoint and is your service control endpoint installed?Justin Self
Would you be able to specify which versions you're running? (plugins, beta versions, SC version, etc.)Hadi Eskandari
@JustinSelf, yes I guess on this side everything is fine. If I am using the whole servicecontrol infrastructure from NServiceBus 5.x it works just fine. I have also remarked that the messages actually do appear in ServiceInsight even if I haven't installed any of the addittional dlls.marco birchler
@HadiEskandari, I have extended my post with version and endpoint information. Please note that I have seen that there would actually be a beta4 version for NserviceBus (not nuget.org but on particular's myget.org source), but if I install this version I get some other error: MissingMethodException: ...GetAvailableTypes(...)marco birchler
@marcobirchler I'll try to repro with the versions you mentioned and get back to youHadi Eskandari

1 Answers

1
votes

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.