diff --git a/Framework/Azure/Cqrs.Azure.ConfigurationManager/Cqrs.Azure.ConfigurationManager.csproj b/Framework/Azure/Cqrs.Azure.ConfigurationManager/Cqrs.Azure.ConfigurationManager.csproj
index 81e2e1e8d..be4d3a06a 100644
--- a/Framework/Azure/Cqrs.Azure.ConfigurationManager/Cqrs.Azure.ConfigurationManager.csproj
+++ b/Framework/Azure/Cqrs.Azure.ConfigurationManager/Cqrs.Azure.ConfigurationManager.csproj
@@ -70,7 +70,7 @@
-
+
diff --git a/Framework/Azure/Cqrs.Azure.Functions.Isolated/Configuration/IsolatedFunctionHostModule.cs b/Framework/Azure/Cqrs.Azure.Functions.Isolated/Configuration/IsolatedFunctionHostModule.cs
index c2c7847ae..6c71945ef 100644
--- a/Framework/Azure/Cqrs.Azure.Functions.Isolated/Configuration/IsolatedFunctionHostModule.cs
+++ b/Framework/Azure/Cqrs.Azure.Functions.Isolated/Configuration/IsolatedFunctionHostModule.cs
@@ -19,6 +19,8 @@
using Cqrs.Services;
using Cqrs.DependencyInjection.Modules;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.ApplicationInsights;
+using Microsoft.ApplicationInsights.Extensibility;
#if NET6_0
using Microsoft.Extensions.Configuration;
@@ -38,10 +40,10 @@ public class IsolatedFunctionHostModule : ResolvableModule
///
public override void Load(IServiceCollection services)
{
- RegisterBasicHelpers(services);
RegisterAzureConfigurations(services);
RegisterBasicServices(services);
RegisterWebBit(services);
+ RegisterBasicHelpers(services);
}
#endregion
@@ -87,21 +89,52 @@ protected virtual void RegisterBasicHelpers(IServiceCollection services)
{
RegisterContextItemCollectionFactory(services);
+ bool isTelemetryClientBound = IsRegistered(services);
+ if (!isTelemetryClientBound)
+ {
+ services.AddSingleton
+ (
+ new TelemetryClient(new TelemetryConfiguration()
+ {
+ ConnectionString = DependencyResolver.ConfigurationManager.GetConnectionString("Cqrs.Hosts.ApplicationInsights.ConnectionString")
+ })
+ );
+ }
+
bool isTelemetryHelperBound = IsRegistered(services);
+ TelemetryHelper helper = null;
if (!isTelemetryHelperBound)
{
- services.AddSingleton();
+ services.AddSingleton(p => {
+ var telemetryHelper = new TelemetryHelper
+ (
+ Resolve(services),
+ Resolve(services),
+ Resolve(services)
+ );
+
+ if (DependencyResolver.ConfigurationManager.TryGetSetting("Cqrs.Hosts.ApplicationInsights.CloudRoleName", out string cloudRoleName) && !string.IsNullOrWhiteSpace(cloudRoleName))
+ telemetryHelper.GetCloudRoleName = () => { return cloudRoleName; };
+ if (DependencyResolver.ConfigurationManager.TryGetSetting("Cqrs.Hosts.ApplicationInsights.OperationName", out string operationName) && !string.IsNullOrWhiteSpace(operationName))
+ telemetryHelper.GetOperationName = () => { return operationName; };
+
+ return telemetryHelper;
+ });
}
else
{
var obj = Resolve(services);
- if (!(obj is TelemetryHelper))
+ helper = obj as TelemetryHelper;
+ if (helper == null)
{
Unbind(services);
services.AddSingleton();
+ obj = Resolve(services);
+ helper = obj as TelemetryHelper;
}
}
}
+
///
/// Registers the required.
///
diff --git a/Framework/Azure/Cqrs.Azure.Functions.Isolated/Cqrs.Azure.Functions.Isolated.csproj b/Framework/Azure/Cqrs.Azure.Functions.Isolated/Cqrs.Azure.Functions.Isolated.csproj
index c0c162cc2..824453110 100644
--- a/Framework/Azure/Cqrs.Azure.Functions.Isolated/Cqrs.Azure.Functions.Isolated.csproj
+++ b/Framework/Azure/Cqrs.Azure.Functions.Isolated/Cqrs.Azure.Functions.Isolated.csproj
@@ -56,8 +56,8 @@
-
-
+
+
diff --git a/Framework/Azure/Cqrs.Azure.Functions.ServiceBus.Isolated/Cqrs.Azure.Functions.ServiceBus.Isolated.csproj b/Framework/Azure/Cqrs.Azure.Functions.ServiceBus.Isolated/Cqrs.Azure.Functions.ServiceBus.Isolated.csproj
index eec7cbe95..6f15e6ca9 100644
--- a/Framework/Azure/Cqrs.Azure.Functions.ServiceBus.Isolated/Cqrs.Azure.Functions.ServiceBus.Isolated.csproj
+++ b/Framework/Azure/Cqrs.Azure.Functions.ServiceBus.Isolated/Cqrs.Azure.Functions.ServiceBus.Isolated.csproj
@@ -62,7 +62,7 @@
-
+
diff --git a/Framework/Azure/Cqrs.Azure.Functions.ServiceBus/Cqrs.Azure.Functions.ServiceBus.csproj b/Framework/Azure/Cqrs.Azure.Functions.ServiceBus/Cqrs.Azure.Functions.ServiceBus.csproj
index 91caa9d3e..5b974f8a3 100644
--- a/Framework/Azure/Cqrs.Azure.Functions.ServiceBus/Cqrs.Azure.Functions.ServiceBus.csproj
+++ b/Framework/Azure/Cqrs.Azure.Functions.ServiceBus/Cqrs.Azure.Functions.ServiceBus.csproj
@@ -62,7 +62,7 @@
-
+
diff --git a/Framework/Azure/Cqrs.Azure.Functions/Configuration/FunctionHostModule.cs b/Framework/Azure/Cqrs.Azure.Functions/Configuration/FunctionHostModule.cs
index 51ea75cf4..46fece252 100644
--- a/Framework/Azure/Cqrs.Azure.Functions/Configuration/FunctionHostModule.cs
+++ b/Framework/Azure/Cqrs.Azure.Functions/Configuration/FunctionHostModule.cs
@@ -19,6 +19,9 @@
using Cqrs.Services;
using Cqrs.DependencyInjection.Modules;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.ApplicationInsights.Extensibility;
+using Microsoft.ApplicationInsights;
+
#if NET6_0
using Microsoft.Extensions.Configuration;
@@ -38,10 +41,10 @@ public class FunctionHostModule : ResolvableModule
///
public override void Load(IServiceCollection services)
{
- RegisterBasicHelpers(services);
RegisterAzureConfigurations(services);
RegisterBasicServices(services);
RegisterWebBit(services);
+ RegisterBasicHelpers(services);
}
#endregion
@@ -87,21 +90,52 @@ protected virtual void RegisterBasicHelpers(IServiceCollection services)
{
RegisterContextItemCollectionFactory(services);
+ bool isTelemetryClientBound = IsRegistered(services);
+ if (!isTelemetryClientBound)
+ {
+ services.AddSingleton
+ (
+ new TelemetryClient(new TelemetryConfiguration()
+ {
+ ConnectionString = DependencyResolver.ConfigurationManager.GetConnectionString("Cqrs.Hosts.ApplicationInsights.ConnectionString")
+ })
+ );
+ }
+
bool isTelemetryHelperBound = IsRegistered(services);
+ TelemetryHelper helper = null;
if (!isTelemetryHelperBound)
{
- services.AddSingleton();
+ services.AddSingleton(p => {
+ var telemetryHelper = new TelemetryHelper
+ (
+ Resolve(services),
+ Resolve(services),
+ Resolve(services)
+ );
+
+ if (DependencyResolver.ConfigurationManager.TryGetSetting("Cqrs.Hosts.ApplicationInsights.CloudRoleName", out string cloudRoleName) && !string.IsNullOrWhiteSpace(cloudRoleName))
+ telemetryHelper.GetCloudRoleName = () => { return cloudRoleName; };
+ if (DependencyResolver.ConfigurationManager.TryGetSetting("Cqrs.Hosts.ApplicationInsights.OperationName", out string operationName) && !string.IsNullOrWhiteSpace(operationName))
+ telemetryHelper.GetOperationName = () => { return operationName; };
+
+ return telemetryHelper;
+ });
}
else
{
var obj = Resolve(services);
- if (!(obj is TelemetryHelper))
+ helper = obj as TelemetryHelper;
+ if (helper == null)
{
Unbind(services);
services.AddSingleton();
+ obj = Resolve(services);
+ helper = obj as TelemetryHelper;
}
}
}
+
///
/// Registers the required.
///
diff --git a/Framework/Azure/Cqrs.Azure.Functions/Cqrs.Azure.Functions.csproj b/Framework/Azure/Cqrs.Azure.Functions/Cqrs.Azure.Functions.csproj
index 1e33b3b0d..0d833f2a4 100644
--- a/Framework/Azure/Cqrs.Azure.Functions/Cqrs.Azure.Functions.csproj
+++ b/Framework/Azure/Cqrs.Azure.Functions/Cqrs.Azure.Functions.csproj
@@ -55,8 +55,8 @@
-
-
+
+
diff --git a/Framework/Azure/Cqrs.Azure.ServiceBus/AzureCommandBusReceiver.cs b/Framework/Azure/Cqrs.Azure.ServiceBus/AzureCommandBusReceiver.cs
index 2abaff74d..3795b21b7 100644
--- a/Framework/Azure/Cqrs.Azure.ServiceBus/AzureCommandBusReceiver.cs
+++ b/Framework/Azure/Cqrs.Azure.ServiceBus/AzureCommandBusReceiver.cs
@@ -467,6 +467,7 @@ void ReceiveCommand(IMessageReceiver
Guid? guidAuthenticationToken = null;
string stringAuthenticationToken = null;
int? intAuthenticationToken = null;
+ string commandType = null;
IDictionary telemetryProperties = ExtractTelemetryProperties(message, "Azure/Servicebus");
TelemetryHelper.TrackMetric("Cqrs/Handle/Command", CurrentHandles++, telemetryProperties);
@@ -498,7 +499,7 @@ await AzureBusHelper.ReceiveCommandAsync(
#endif
() =>
{
- wasSuccessfull = null;
+ wasSuccessfull = null;
telemetryName = $"Cqrs/Handle/Command/Skipped/{message.MessageId}";
responseCode = "204";
// Remove message from queue
@@ -560,7 +561,8 @@ await AzureBusHelper.RefreshLockAsync(serviceBusReceiver,
{
if (command != null)
{
- telemetryName = $"{command.GetType().FullName}/{command.Id}";
+ commandType = command.GetType().FullName;
+ telemetryName = $"{commandType}/{command.Id}";
authenticationToken = command.AuthenticationToken as ISingleSignOnToken;
if (AuthenticationTokenIsGuid)
guidAuthenticationToken = command.AuthenticationToken as Guid?;
@@ -750,6 +752,22 @@ await AzureBusHelper.RefreshLockAsync(serviceBusReceiver,
TelemetryHelper.TrackMetric("Cqrs/Handle/Command", CurrentHandles--, telemetryProperties);
mainStopWatch.Stop();
+
+ TelemetryHelper.TrackProcessFlow
+ (
+ telemetryName,
+ new Uri(string.Format("cqrs://{0}", telemetryName)),
+ "Command",
+ commandType,
+ GetType().Name,
+ null,
+ mainStopWatch.Elapsed,
+ responseCode,
+ wasSuccessfull == null || wasSuccessfull.Value,
+ null,
+ telemetryProperties
+ );
+
if (guidAuthenticationToken != null)
TelemetryHelper.TrackRequest
(
diff --git a/Framework/Azure/Cqrs.Azure.ServiceBus/AzureEventBusReceiver.cs b/Framework/Azure/Cqrs.Azure.ServiceBus/AzureEventBusReceiver.cs
index 6e6209cf2..e32b8d433 100644
--- a/Framework/Azure/Cqrs.Azure.ServiceBus/AzureEventBusReceiver.cs
+++ b/Framework/Azure/Cqrs.Azure.ServiceBus/AzureEventBusReceiver.cs
@@ -479,6 +479,7 @@ void ReceiveEvent(IMessageReceiver
Guid? guidAuthenticationToken = null;
string stringAuthenticationToken = null;
int? intAuthenticationToken = null;
+ string eventType = null;
IDictionary telemetryProperties = ExtractTelemetryProperties(message, "Azure/Servicebus");
TelemetryHelper.TrackMetric("Cqrs/Handle/Event", CurrentHandles++, telemetryProperties);
@@ -572,7 +573,8 @@ await AzureBusHelper.RefreshLockAsync(serviceBusReceiver,
{
if (@event != null)
{
- telemetryName = $"{@event.GetType().FullName}/{@event.GetIdentity()}/{@event.Id}";
+ eventType = @event.GetType().FullName;
+ telemetryName = $"{eventType}/{@event.GetIdentity()}/{@event.Id}";
authenticationToken = @event.AuthenticationToken as ISingleSignOnToken;
if (AuthenticationTokenIsGuid)
guidAuthenticationToken = @event.AuthenticationToken as Guid?;
@@ -766,6 +768,22 @@ await AzureBusHelper.RefreshLockAsync(serviceBusReceiver,
TelemetryHelper.TrackMetric("Cqrs/Handle/Event", CurrentHandles--, telemetryProperties);
mainStopWatch.Stop();
+
+ TelemetryHelper.TrackProcessFlow
+ (
+ telemetryName,
+ new Uri(string.Format("cqrs://{0}", telemetryName)),
+ "Event",
+ eventType,
+ GetType().Name,
+ null,
+ mainStopWatch.Elapsed,
+ responseCode,
+ wasSuccessfull == null || wasSuccessfull.Value,
+ null,
+ telemetryProperties
+ );
+
if (guidAuthenticationToken != null)
TelemetryHelper.TrackRequest
(
diff --git a/Framework/Azure/Cqrs.Azure.ServiceBus/Cqrs.Azure.ServiceBus.csproj b/Framework/Azure/Cqrs.Azure.ServiceBus/Cqrs.Azure.ServiceBus.csproj
index 17f6d0f9e..f83e8d536 100644
--- a/Framework/Azure/Cqrs.Azure.ServiceBus/Cqrs.Azure.ServiceBus.csproj
+++ b/Framework/Azure/Cqrs.Azure.ServiceBus/Cqrs.Azure.ServiceBus.csproj
@@ -126,7 +126,7 @@
-
+
diff --git a/Framework/Azure/Cqrs.Azure.WebJobs/Cqrs.Azure.WebJobs.csproj b/Framework/Azure/Cqrs.Azure.WebJobs/Cqrs.Azure.WebJobs.csproj
index 11e8399f1..a7d289bb7 100644
--- a/Framework/Azure/Cqrs.Azure.WebJobs/Cqrs.Azure.WebJobs.csproj
+++ b/Framework/Azure/Cqrs.Azure.WebJobs/Cqrs.Azure.WebJobs.csproj
@@ -86,7 +86,7 @@
-
+
diff --git a/Framework/Cqrs/Configuration/ConfigurationExtensions.cs b/Framework/Cqrs/Configuration/ConfigurationExtensions.cs
index c934cf96b..41a7a7caa 100644
--- a/Framework/Cqrs/Configuration/ConfigurationExtensions.cs
+++ b/Framework/Cqrs/Configuration/ConfigurationExtensions.cs
@@ -7,9 +7,11 @@
#endregion
using System;
-using Chinchilla.Logging;
+using System.IO;
using System.Reflection;
+using Chinchilla.Logging;
using Chinchilla.Logging.Configuration;
+using Chinchilla.StateManagement;
namespace Cqrs.Configuration
{
@@ -45,23 +47,53 @@ public static ITelemetryHelper CreateTelemetryHelper(this IConfigurationManager
if (useApplicationInsightTelemetryHelper)
{
- ITelemetryHelper helper;
- try
- {
+ string assemblyFile = Path.Combine(GetExecutionPath(), "Chinchilla.Logging.Azure.ApplicationInsights.dll");
+ ITelemetryHelper helper = null;
+ Action action = () => {
+ try
+ {
#if NETSTANDARD2_0
- helper = (ITelemetryHelper)DotNetStandard2Helper.CreateInstanceFrom(string.Format("{0}\\Chinchilla.Logging.Azure.ApplicationInsights.dll", GetExecutionPath()), "Chinchilla.Logging.Azure.ApplicationInsights.TelemetryHelper", false, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.CreateInstance, null, new object[] { correlationIdHelper, DependencyResolver.Current.Resolve() }, null, null);
+ helper = (ITelemetryHelper)DotNetStandard2Helper.CreateInstanceFrom(assemblyFile, "Chinchilla.Logging.Azure.ApplicationInsights.TelemetryHelper", false, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.CreateInstance, null, new object[] { correlationIdHelper, DependencyResolver.Current.Resolve(), DependencyResolver.Current.Resolve(), false }, null, null);
#else
- helper = (ITelemetryHelper)Activator.CreateInstanceFrom(string.Format("{0}\\Chinchilla.Logging.Azure.ApplicationInsights.dll", GetExecutionPath()), "Chinchilla.Logging.Azure.ApplicationInsights.TelemetryHelper", false, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.CreateInstance, null, new object[] { correlationIdHelper, DependencyResolver.Current.Resolve() }, null, null).Unwrap();
+ helper = (ITelemetryHelper)Activator.CreateInstanceFrom(assemblyFile, "Chinchilla.Logging.Azure.ApplicationInsights.TelemetryHelper", false, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.CreateInstance, null, new object[] { correlationIdHelper, DependencyResolver.Current.Resolve(), DependencyResolver.Current.Resolve(), false }, null, null).Unwrap();
#endif
- }
- catch
- {
+ }
+ catch (FileNotFoundException)
+ {
+ throw;
+ }
+ catch
+ {
#if NETSTANDARD2_0
- helper = (ITelemetryHelper)DotNetStandard2Helper.CreateInstanceFrom(string.Format("{0}\\Chinchilla.Logging.Azure.ApplicationInsights.dll", GetExecutionPath()), "Chinchilla.Logging.Azure.ApplicationInsights.TelemetryHelper", false, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.CreateInstance, null, new object[] { correlationIdHelper }, null, null);
+ helper = (ITelemetryHelper)DotNetStandard2Helper.CreateInstanceFrom(assemblyFile, "Chinchilla.Logging.Azure.ApplicationInsights.TelemetryHelper", false, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.CreateInstance, null, new object[] { correlationIdHelper, null, DependencyResolver.Current.Resolve(), false }, null, null);
#else
- helper = (ITelemetryHelper)Activator.CreateInstanceFrom(string.Format("{0}\\Chinchilla.Logging.Azure.ApplicationInsights.dll", GetExecutionPath()), "Chinchilla.Logging.Azure.ApplicationInsights.TelemetryHelper", false, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.CreateInstance, null, new object[] { correlationIdHelper }, null, null).Unwrap();
+ helper = (ITelemetryHelper)Activator.CreateInstanceFrom(assemblyFile, "Chinchilla.Logging.Azure.ApplicationInsights.TelemetryHelper", false, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.CreateInstance, null, new object[] { correlationIdHelper, null, DependencyResolver.Current.Resolve(), false }, null, null).Unwrap();
#endif
+ }
+ };
+ try
+ {
+ action();
}
+ catch (FileNotFoundException)
+ {
+ assemblyFile = Path.Combine(GetExecutionPath(), "..", "Chinchilla.Logging.Azure.ApplicationInsights.dll");
+ action();
+ }
+
+ if (configurationManager.TryGetSetting("Cqrs.Hosts.ApplicationInsights.CloudRoleName", out string cloudRoleName) && !string.IsNullOrWhiteSpace(cloudRoleName))
+ {
+ PropertyInfo getCloudRoleNameProperty = helper.GetType().GetProperty("GetCloudRoleName", BindingFlags.Instance | BindingFlags.Public);
+ if (getCloudRoleNameProperty != null)
+ getCloudRoleNameProperty.SetValue(helper, (Func)(() => { return cloudRoleName; }), null);
+ }
+ if (configurationManager.TryGetSetting("Cqrs.Hosts.ApplicationInsights.OperationName", out string operationName) && !string.IsNullOrWhiteSpace(operationName))
+ {
+ PropertyInfo getOperationNameProperty = helper.GetType().GetProperty("GetOperationName", BindingFlags.Instance | BindingFlags.Public);
+ if (getOperationNameProperty != null)
+ getOperationNameProperty.SetValue(helper, (Func)(() => { return operationName; }), null);
+ }
+
return helper;
}
return new NullTelemetryHelper();
diff --git a/Framework/Cqrs/Cqrs.csproj b/Framework/Cqrs/Cqrs.csproj
index 0afc9984f..a8f4f4f0b 100644
--- a/Framework/Cqrs/Cqrs.csproj
+++ b/Framework/Cqrs/Cqrs.csproj
@@ -157,8 +157,8 @@
-
-
+
+
diff --git a/Framework/Ninject/Azure/Cqrs.Ninject.Azure.ServiceBus.CommandBus/Cqrs.Ninject.Azure.ServiceBus.CommandBus.csproj b/Framework/Ninject/Azure/Cqrs.Ninject.Azure.ServiceBus.CommandBus/Cqrs.Ninject.Azure.ServiceBus.CommandBus.csproj
index 349592a9f..01654c80b 100644
--- a/Framework/Ninject/Azure/Cqrs.Ninject.Azure.ServiceBus.CommandBus/Cqrs.Ninject.Azure.ServiceBus.CommandBus.csproj
+++ b/Framework/Ninject/Azure/Cqrs.Ninject.Azure.ServiceBus.CommandBus/Cqrs.Ninject.Azure.ServiceBus.CommandBus.csproj
@@ -74,7 +74,7 @@
-
+
diff --git a/Framework/Ninject/Azure/Cqrs.Ninject.Azure.ServiceBus.EventBus/Cqrs.Ninject.Azure.ServiceBus.EventBus.csproj b/Framework/Ninject/Azure/Cqrs.Ninject.Azure.ServiceBus.EventBus/Cqrs.Ninject.Azure.ServiceBus.EventBus.csproj
index 6364bee80..a4edf2fc3 100644
--- a/Framework/Ninject/Azure/Cqrs.Ninject.Azure.ServiceBus.EventBus/Cqrs.Ninject.Azure.ServiceBus.EventBus.csproj
+++ b/Framework/Ninject/Azure/Cqrs.Ninject.Azure.ServiceBus.EventBus/Cqrs.Ninject.Azure.ServiceBus.EventBus.csproj
@@ -75,7 +75,7 @@
-
+
diff --git a/Framework/Ninject/Azure/Cqrs.Ninject.Azure.Wcf/Cqrs.Ninject.Azure.Wcf.csproj b/Framework/Ninject/Azure/Cqrs.Ninject.Azure.Wcf/Cqrs.Ninject.Azure.Wcf.csproj
index b8e88171c..9f4bdafb9 100644
--- a/Framework/Ninject/Azure/Cqrs.Ninject.Azure.Wcf/Cqrs.Ninject.Azure.Wcf.csproj
+++ b/Framework/Ninject/Azure/Cqrs.Ninject.Azure.Wcf/Cqrs.Ninject.Azure.Wcf.csproj
@@ -92,8 +92,8 @@
-
-
+
+
diff --git a/Framework/Ninject/Cqrs.Ninject/Cqrs.Ninject.csproj b/Framework/Ninject/Cqrs.Ninject/Cqrs.Ninject.csproj
index adcccf243..2828fe3d7 100644
--- a/Framework/Ninject/Cqrs.Ninject/Cqrs.Ninject.csproj
+++ b/Framework/Ninject/Cqrs.Ninject/Cqrs.Ninject.csproj
@@ -82,7 +82,7 @@
-
+
diff --git a/Scheduler/Cqrs.Scheduler.SampleReport/EventReceiver.cs b/Scheduler/Cqrs.Scheduler.SampleReport/EventReceiver.cs
index 9d9b4a711..01df74237 100644
--- a/Scheduler/Cqrs.Scheduler.SampleReport/EventReceiver.cs
+++ b/Scheduler/Cqrs.Scheduler.SampleReport/EventReceiver.cs
@@ -1,10 +1,11 @@
+using System;
+using System.Threading.Tasks;
using Azure.Messaging.ServiceBus;
+using Chinchilla.StateManagement;
using Cqrs.Azure.Functions.ServiceBus;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.ServiceBus;
using Microsoft.Extensions.Logging;
-using System;
-using System.Threading.Tasks;
[ServiceBusAccount("ConnectionStrings:Cqrs.Azure.EventBus.ConnectionString")]
public class EventReceiver
@@ -13,26 +14,31 @@ public class EventReceiver
private readonly AzureFunctionEventBusReceiver _eventReceiver;
- public EventReceiver(ILogger log, AzureFunctionEventBusReceiver eventReceiver)
+ private readonly IContextItemCollection _backChannel;
+
+ public EventReceiver(ILogger log, AzureFunctionEventBusReceiver eventReceiver, IContextItemCollectionFactory contextItemCollectionFactory)
{
_logger = log;
_eventReceiver = eventReceiver;
+ _backChannel = contextItemCollectionFactory.GetCurrentContext();
}
///
/// Receives a from the event bus.
///
[FunctionName("SampleReports-Private")]
- public async virtual Task ReceiveEventPrivate([ServiceBusTrigger("%Cqrs:Azure:EventBus:PrivateEvent:Topic:Name%", "%Cqrs:Azure:EventBus:PrivateEvent:Topic:Subscription:Name%", AutoCompleteMessages = false)] ServiceBusReceivedMessage message, ServiceBusClient client, ServiceBusMessageActions messageActions)
+ public async virtual Task ReceiveEventPrivate([ServiceBusTrigger("%Cqrs:Azure:EventBus:PrivateEvent:Topic:Name%", "%Cqrs:Azure:EventBus:PrivateEvent:Topic:Subscription:Name%", AutoCompleteMessages = false)] ServiceBusReceivedMessage message, ServiceBusClient client, ServiceBusMessageActions messageActions, ExecutionContext executionContext)
{
+ _backChannel.SetData("Cqrs.Azure.FunctionName", executionContext?.FunctionName);
await _eventReceiver.ReceiveEventAsync(client, messageActions, message);
}
///
/// Receives a from the event bus.
///
[FunctionName("SampleReports-Public")]
- public async virtual Task ReceiveEventPublic([ServiceBusTrigger("%Cqrs:Azure:EventBus:PublicEvent:Topic:Name%", "%Cqrs:Azure:EventBus:PublicEvent:Topic:Subscription:Name%", AutoCompleteMessages = false)] ServiceBusReceivedMessage message, ServiceBusClient client, ServiceBusMessageActions messageActions)
+ public async virtual Task ReceiveEventPublic([ServiceBusTrigger("%Cqrs:Azure:EventBus:PublicEvent:Topic:Name%", "%Cqrs:Azure:EventBus:PublicEvent:Topic:Subscription:Name%", AutoCompleteMessages = false)] ServiceBusReceivedMessage message, ServiceBusClient client, ServiceBusMessageActions messageActions, ExecutionContext executionContext)
{
+ _backChannel.SetData("Cqrs.Azure.FunctionName", executionContext?.FunctionName);
await _eventReceiver.ReceiveEventAsync(client, messageActions, message);
}
}
\ No newline at end of file
diff --git a/Scheduler/Cqrs.Scheduler.TimeZones/CommandHandlers/PublishTimeZonesCommandHandler.partial.cs b/Scheduler/Cqrs.Scheduler.TimeZones/CommandHandlers/PublishTimeZonesCommandHandler.partial.cs
index a73f9ab57..7dd64bc5c 100644
--- a/Scheduler/Cqrs.Scheduler.TimeZones/CommandHandlers/PublishTimeZonesCommandHandler.partial.cs
+++ b/Scheduler/Cqrs.Scheduler.TimeZones/CommandHandlers/PublishTimeZonesCommandHandler.partial.cs
@@ -40,9 +40,10 @@ public virtual async Task HandleAsync(PublishTimeZonesCommand message)
DateTimeOffset processDate = GetNowToTheNearestPrevious15Minutes();
- Logger.LogDebug(string.Format("The calculated time is: '{0}' and the actual time is: '{1}'", processDate, actualDateTime));
+ string logMessage = $"The calculated time is: '{processDate}' and the actual time is: '{actualDateTime}'";
+ Logger.LogDebug(logMessage);
// We Console.WriteLine as this is a WebJob and that will send output to the diagnostic Azure WebJob portal.
- Console.WriteLine("The calculated time is: '{0}' and the actual time is: '{1}'", processDate, actualDateTime);
+ Console.WriteLine(logMessage);
await FindAndPublishTimeZones(null, processDate);
await FindAndPublishTimeZones(0, processDate);
diff --git a/Scheduler/Cqrs.Scheduler.TimeZones/CommandReceiver.cs b/Scheduler/Cqrs.Scheduler.TimeZones/CommandReceiver.cs
index 5c54db872..bcb839b55 100644
--- a/Scheduler/Cqrs.Scheduler.TimeZones/CommandReceiver.cs
+++ b/Scheduler/Cqrs.Scheduler.TimeZones/CommandReceiver.cs
@@ -1,8 +1,10 @@
+using System;
+using System.Threading.Tasks;
using Azure.Messaging.ServiceBus;
+using Chinchilla.StateManagement;
using Cqrs.Azure.ServiceBus;
+using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
-using System;
-using System.Threading.Tasks;
public class CommandReceiver
{
@@ -10,26 +12,31 @@ public class CommandReceiver
private readonly AzureCommandBusReceiver _commandReceiver;
- public CommandReceiver(ILogger log, AzureCommandBusReceiver commandReceiver)
+ private readonly IContextItemCollection _backChannel;
+
+ public CommandReceiver(ILogger log, AzureCommandBusReceiver commandReceiver, IContextItemCollectionFactory contextItemCollectionFactory)
{
_logger = log;
_commandReceiver = commandReceiver;
+ _backChannel = contextItemCollectionFactory.GetCurrentContext();
}
///
/// Receives a from the command bus.
///
[Microsoft.Azure.Functions.Worker.Function("Timzezones.Isolated.Private")]
- public async virtual Task ReceiveCommandPrivate([Microsoft.Azure.Functions.Worker.ServiceBusTrigger("Cqrs.Scheduler.Commands-Local.Private", "Cqrs.Timezone-Publisher", Connection = "Cqrs.Azure.CommandBus.ConnectionString")] ServiceBusReceivedMessage message)
+ public async virtual Task ReceiveCommandPrivate([Microsoft.Azure.Functions.Worker.ServiceBusTrigger("Cqrs.Scheduler.Commands-Local.Private", "Cqrs.Timezone-Publisher", Connection = "Cqrs.Azure.CommandBus.ConnectionString")] ServiceBusReceivedMessage message, FunctionContext executionContext)
{
+ _backChannel.SetData("Cqrs.Azure.FunctionName", executionContext?.Features?.Get()?.Name);
await _commandReceiver.ReceiveCommandAsync((ServiceBusReceiver)null, message);
}
///
/// Receives a from the command bus.
///
[Microsoft.Azure.Functions.Worker.Function("Timzezones.Isolated.Public")]
- public async virtual Task ReceiveCommandPublic([Microsoft.Azure.Functions.Worker.ServiceBusTrigger("Cqrs.Scheduler.Commands-Local.Public", "Cqrs.Timezone-Publisher", Connection = "Cqrs.Azure.CommandBus.ConnectionString")] ServiceBusReceivedMessage message)
+ public async virtual Task ReceiveCommandPublic([Microsoft.Azure.Functions.Worker.ServiceBusTrigger("Cqrs.Scheduler.Commands-Local.Public", "Cqrs.Timezone-Publisher", Connection = "Cqrs.Azure.CommandBus.ConnectionString")] ServiceBusReceivedMessage message, FunctionContext executionContext)
{
+ _backChannel.SetData("Cqrs.Azure.FunctionName", executionContext?.Features?.Get()?.Name);
await _commandReceiver.ReceiveCommandAsync((ServiceBusReceiver)null, message);
}
}
\ No newline at end of file