Skip to content

Commit 8cc3a2a

Browse files
authored
Merge pull request #5 from Particular/release-2.0
Release 2.0
2 parents 7c440a3 + e6d95c5 commit 8cc3a2a

File tree

6 files changed

+58
-60
lines changed

6 files changed

+58
-60
lines changed

packaging/nuget/nservicebus.metrics.servicecontrol.msmq.nuspec

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
<copyright>$copyright$</copyright>
1414
<tags>$tags$</tags>
1515
<dependencies>
16-
<dependency id="NServiceBus.Metrics.ServiceControl" version="[1.3.0-rc0002,2.0.0)" />
17-
<dependency id="NServiceBus" version="[5.2,6)" />
16+
<dependency id="NServiceBus.Metrics.ServiceControl" version="[2.1.0-rc0002,3.0.0)" />
17+
<dependency id="NServiceBus" version="[6.2,7)" />
1818
</dependencies>
1919
</metadata>
2020
<files>
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,37 @@
1-
using System.Messaging;
2-
using NServiceBus;
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Messaging;
35
using NServiceBus.Metrics.ServiceControl;
46

57
class MsmqNativeQueueLengthReporter
68
{
79
IReportNativeQueueLength nativeQueueLengthReporter;
8-
readonly Configure configure;
9-
string localAddress;
10-
MessageQueue messageQueue;
10+
List<Tuple<string, MessageQueue>> monitoredQueues = new List<Tuple<string, MessageQueue>>();
1111

12-
public MsmqNativeQueueLengthReporter(IReportNativeQueueLength nativeQueueLengthReporter, Configure configure)
12+
public MsmqNativeQueueLengthReporter(IReportNativeQueueLength nativeQueueLengthReporter)
1313
{
1414
this.nativeQueueLengthReporter = nativeQueueLengthReporter;
15-
this.configure = configure;
1615
}
1716

1817
public void Warmup()
1918
{
20-
localAddress = configure.LocalAddress.ToString();
21-
messageQueue = new MessageQueue($@".\private$\{configure.LocalAddress.Queue}", QueueAccessMode.Peek);
19+
foreach (var monitoredQueue in nativeQueueLengthReporter.MonitoredQueues)
20+
{
21+
var queueName = monitoredQueue.Split('@').FirstOrDefault();
22+
23+
var messageQueue = new MessageQueue($@".\private$\{queueName}", QueueAccessMode.Peek);
24+
25+
monitoredQueues.Add(Tuple.Create(monitoredQueue, messageQueue));
26+
}
2227
}
2328

2429
public void ReportNativeQueueLength()
2530
{
26-
nativeQueueLengthReporter.ReportQueueLength(localAddress, messageQueue.GetCount());
31+
foreach (var monitoredQueue in monitoredQueues)
32+
{
33+
var count = monitoredQueue.Item2.GetCount();
34+
nativeQueueLengthReporter.ReportQueueLength(monitoredQueue.Item1, count);
35+
}
2736
}
2837
}

src/NServiceBus.Metrics.ServiceControl.Msmq/NServiceBus.Metrics.ServiceControl.Msmq.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
<DebugSymbols>true</DebugSymbols>
1111
</PropertyGroup>
1212
<ItemGroup>
13-
<PackageReference Include="NServiceBus.Metrics.ServiceControl" Version="1.3.0-rc0002" />
14-
<PackageReference Include="NServiceBus" Version="5.0.0" />
13+
<PackageReference Include="NServiceBus.Metrics.ServiceControl" Version="2.1.0-rc0002" />
14+
<PackageReference Include="NServiceBus" Version="6.2.0" />
1515
<PackageReference Include="GitVersionTask" Version="3.6.5" />
1616
<PackageReference Include="NuGetPackager" Version="0.6.5" />
1717
</ItemGroup>

src/NServiceBus.Metrics.ServiceControl.Msmq/ReportMsmqNativeQueueLength.cs

+9-6
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
using NServiceBus;
55
using NServiceBus.Features;
66
using NServiceBus.Logging;
7-
using NServiceBus.Transports;
7+
using NServiceBus.Transport;
88

99
class ReportMsmqNativeQueueLength : Feature
1010
{
1111
public ReportMsmqNativeQueueLength()
1212
{
1313
EnableByDefault();
14-
DependsOn("ServiceControlMonitoring");
14+
DependsOn("NServiceBus.Metrics.ServiceControl.ReportingFeature");
1515
Prerequisite(ctx => ctx.Settings.Get<TransportDefinition>() is MsmqTransport, "MSMQ Transport not configured");
1616
}
1717

@@ -20,7 +20,7 @@ protected override void Setup(FeatureConfigurationContext context)
2020
context.Container.ConfigureComponent<MsmqNativeQueueLengthReporter>(DependencyLifecycle.SingleInstance);
2121
context.Container.ConfigureComponent<PeriodicallyReportQueueLength>(DependencyLifecycle.SingleInstance);
2222

23-
RegisterStartupTask<PeriodicallyReportQueueLength>();
23+
context.RegisterStartupTask(b => new PeriodicallyReportQueueLength(b.Build<MsmqNativeQueueLengthReporter>()));
2424
}
2525

2626
class PeriodicallyReportQueueLength : FeatureStartupTask
@@ -35,7 +35,7 @@ public PeriodicallyReportQueueLength(MsmqNativeQueueLengthReporter reporter)
3535
this.reporter = reporter;
3636
}
3737

38-
protected override void OnStart()
38+
protected override Task OnStart(IMessageSession messageSession)
3939
{
4040
cancellationTokenSource = new CancellationTokenSource();
4141
task = Task.Run(async () =>
@@ -58,12 +58,15 @@ protected override void OnStart()
5858
}
5959
}
6060
});
61+
62+
return Task.FromResult(0);
6163
}
6264

63-
protected override void OnStop()
65+
protected override Task OnStop(IMessageSession messageSession)
6466
{
6567
cancellationTokenSource.Cancel();
66-
task.GetAwaiter().GetResult();
68+
69+
return task;
6770
}
6871

6972
static ILog Log = LogManager.GetLogger<PeriodicallyReportQueueLength>();

src/SampleEndpoint/Program.cs

+25-40
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,36 @@
1-
using System;
2-
3-
namespace SampleEndpoint
1+
namespace SampleEndpoint
42
{
5-
using System.Threading;
3+
using System;
4+
using System.Threading.Tasks;
65
using NServiceBus;
7-
using NServiceBus.Config;
8-
using NServiceBus.Config.ConfigurationSource;
9-
using NServiceBus.Metrics.ServiceControl;
6+
//using NServiceBus.Logging;
107

118
class Program
129
{
13-
static void Main(string[] args)
10+
static async Task Main(string[] args)
1411
{
15-
var config = new BusConfiguration();
16-
config.EndpointName("SomeName");
17-
config.SendMetricDataToServiceControl("Particular.Monitoring");
18-
config.UsePersistence<InMemoryPersistence>();
12+
//LogManager.Use<DefaultFactory>().Level(LogLevel.Debug);
1913

20-
using (var bus = Bus.Create(config).Start())
21-
{
22-
Console.WriteLine("Bus Started");
14+
var endpointConfig = new EndpointConfiguration("SomeName");
15+
endpointConfig.UseTransport<MsmqTransport>();
16+
endpointConfig.EnableMetrics()
17+
.SendMetricDataToServiceControl("Particular.Monitoring", TimeSpan.FromMilliseconds(500));
18+
endpointConfig.UsePersistence<InMemoryPersistence>();
19+
endpointConfig.AuditProcessedMessagesTo("audit");
20+
endpointConfig.SendFailedMessagesTo("error");
2321

24-
while (Console.ReadKey(true).Key != ConsoleKey.Escape)
25-
{
26-
bus.SendLocal(new SomeMessage());
27-
}
22+
var endpoint = await Endpoint.Start(endpointConfig).ConfigureAwait(false);
2823

29-
Console.WriteLine("Bus Stopped");
24+
Console.WriteLine("Endpoint Started");
25+
26+
while (Console.ReadKey(true).Key != ConsoleKey.Escape)
27+
{
28+
await endpoint.SendLocal(new SomeMessage()).ConfigureAwait(false);
3029
}
30+
31+
await endpoint.Stop().ConfigureAwait(false);
32+
33+
Console.WriteLine("Bus Stopped");
3134
}
3235
}
3336

@@ -38,27 +41,9 @@ class SomeMessage : ICommand
3841

3942
class SomeMessageHandler : IHandleMessages<SomeMessage>
4043
{
41-
public void Handle(SomeMessage message)
44+
public Task Handle(SomeMessage message, IMessageHandlerContext context)
4245
{
43-
Thread.Sleep(TimeSpan.FromMilliseconds(500));
46+
return Task.Delay(500);
4447
}
4548
}
46-
47-
48-
class AuditConfigProvider : IProvideConfiguration<AuditConfig>
49-
{
50-
51-
public AuditConfig GetConfiguration() => new AuditConfig
52-
{
53-
QueueName = "audit"
54-
};
55-
}
56-
57-
class ErrorConfigProvider : IProvideConfiguration<MessageForwardingInCaseOfFaultConfig>
58-
{
59-
public MessageForwardingInCaseOfFaultConfig GetConfiguration() => new MessageForwardingInCaseOfFaultConfig
60-
{
61-
ErrorQueue = "error"
62-
};
63-
}
6449
}

src/SampleEndpoint/SampleEndpoint.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
55
<TargetFramework>net452</TargetFramework>
6+
<LangVersion>7.1</LangVersion>
67
</PropertyGroup>
78

89
<ItemGroup>

0 commit comments

Comments
 (0)