Licensing

Component: NServiceBus | Nuget: NServiceBus (Version: 5.x)

License details

See Particular Licensing for license specifics.

License validity

The license is valid if the ExpirationDate or the UpgradeProtectionExpiration attribute in the license data is greater than or equal to the release date of the {major}.{minor}.0 version of the NServiceBus assembly used by the endpoint. The release dates for the various versions can be found on NuGet.

Only the Major/Minor part is relevant. Eg. if using NServiceBus 6.1.1 it's the release date if 6.1.0 that counts.

Throughput limitations

No limitations are enforced when either no license is found or a license has expired.

License Management

Using the configuration API

It is possible to specify the license to use in the configuration code:

Edit
busConfiguration.LicensePath("PathToLicense");
// or
busConfiguration.License("YourCustomLicenseText");

Using the Registry

Using the NServiceBus PowerShell Module is the preferred and simplest method of adding the license file.

Using the registry allows all platform tools (endpoints, ServiceControl, and ServiceInsight) to access the same license.

Using the NServiceBus PowerShell Cmdlet

The NServiceBus PowerShell Module includes a cmdlet for importing the Platform License into the HKEY_LOCAL_MACHINE registry.

For 64-bit operating systems the license is stored under "license" registry value in both the HKEY_LOCAL_MACHINE\Software\ParticularSoftware and HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ParticularSoftware registry keys

Other Manual Options

These following instructions cover installing the license file without using NServiceBus PowerShell Module. These options give a bit more flexibility as they support storing the the license in HKEY_CURRENT_USER. If the licenses is stored in HKEY_CURRENT_USER it is only accessible to the current user.

Using PowerShell Command Prompt

  • Open an administrative PowerShell prompt.
  • Change the current working directory to where the license.xml file is.
  • Run the following script
$content = Get-Content license.xml | Out-String
New-Item -Path HKLM:\Software\ParticularSoftware -Force 
Set-ItemProperty -Path HKLM:\Software\ParticularSoftware -Name License -Force -Value $content
For 64 bit operating systems repeat the process in both the PowerShell prompt and the PowerShell(x86) console prompt. This will ensure the license is imported into both the 32 bit and 64 bit registry keys.

Using Registry Editor

  • Start the Registry Editor
  • Go to HKEY_LOCAL_MACHINE\Software\ParticularSoftware or HKEY_CURRENT_USER\Software\ParticularSoftware
  • Create a new Multi-String Value (REG_MULTI_SZ) named License
  • Paste the contents of the license file.

If HKEY_LOCAL_MACHINE is the chosen license location and the operating system is 64-bit then repeat the import process for the HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ParticularSoftware key to support 32-bit clients.

It is safe to ignore any warnings regarding empty strings.

Using a License sub-directory

A file located at [AppDomain.CurrentDomain.BaseDirectory]/License/License.xml will be automatically detected.

Using the app.config settings

It is possible to specify the license in app.config:

  • Use the key NServiceBus/LicensePath to specify the path where NServiceBus looks for the license. For example:
<appSettings>
  <add key="NServiceBus/LicensePath"
       value="C:\NServiceBus\License\License.xml" />
</appSettings>
  • Use the key NServiceBus/License to transfer the actual XML-encoded contents of the license. For example:
<appSettings>
  <add key="NServiceBus/License" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;&lt;
license id=&quot;1222e1d1-2222-4a46-b1c6-943c442ca710&quot; expiration=&quot;2013-11-30T00:00:00.0000000
&quot; type=&quot;Standard&quot; LicenseType=&quot;Standard&quot; LicenseVersion=&quot;4.0
&quot; MaxMessageThroughputPerSecond=&quot;Max&quot; WorkerThreads=&quot;Max
&quot; AllowedNumberOfWorkerNodes=&quot;Max&quot;&gt;
. . .
&lt;/license&gt;" />
</appSettings>

Order of license detection

This section details where NServiceBus will look for license information, and in what order. For example, an expired license in HKEY_CURRENT_USER would overrule a valid license in HKEY_LOCAL_MACHINE. Note that these vary somewhat in older versions.

In order to find the license, NServiceBus will examine:

LocationNotes
HKEY_CURRENT_USER\Software\ParticularSoftware\License
HKEY_CURRENT_USER\Software\Wow6432Node\ParticularSoftware\License1
HKEY_LOCAL_MACHINE\Software\ParticularSoftware\License
HKEY_LOCAL_MACHINE\Software\Wow6432Node\ParticularSoftware\License1
License XML defined by NServiceBus/License appSetting
File path configured through NServiceBus/LicensePath appSetting
File located at {AppDomain.CurrentDomain.BaseDirectory}\NServiceBus\License.xml
File located at {AppDomain.CurrentDomain.BaseDirectory}\License\License.xml

Notes:

  1. The Wow6432Node registry keys are only accessed if running a 32-bit host on a 64-bit OS.

Related Articles


Last modified