Skip to content

Commit 1ca625e

Browse files
committed
fix: use only dotnet 8 ImeterFactory for implementation
1 parent 8f51146 commit 1ca625e

15 files changed

+271
-135
lines changed

.ci/ubuntu/one-node/gha-setup.sh

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,8 @@ readonly rabbitmq_image="${RABBITMQ_IMAGE:-rabbitmq:4-management}"
1414
readonly docker_name_prefix='rabbitmq-amqp-dotnet-client'
1515
readonly docker_network_name="$docker_name_prefix-network"
1616

17-
if [[ ! -v GITHUB_ACTIONS ]]
18-
then
1917
GITHUB_ACTIONS='false'
20-
fi
18+
2119

2220
if [[ -d $GITHUB_WORKSPACE ]]
2321
then
@@ -126,14 +124,7 @@ function get_rabbitmq_id
126124
local rabbitmq_docker_id
127125
rabbitmq_docker_id="$(docker inspect --format='{{.Id}}' "$rabbitmq_docker_name")"
128126
echo "[INFO] '$rabbitmq_docker_name' docker id is '$rabbitmq_docker_id'"
129-
if [[ -v GITHUB_OUTPUT ]]
130-
then
131-
if [[ -f $GITHUB_OUTPUT ]]
132-
then
133-
echo "[INFO] GITHUB_OUTPUT file: '$GITHUB_OUTPUT'"
134-
fi
135-
echo "id=$rabbitmq_docker_id" >> "$GITHUB_OUTPUT"
136-
fi
127+
137128
}
138129

139130
function install_ca_certificate

Directory.Packages.props

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
<PropertyGroup>
33
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
44
</PropertyGroup>
5-
65
<ItemGroup>
76
<!-- RabbitMQ.Amqp.Client -->
87
<PackageVersion Include="AMQPNetLite.Core" Version="2.4.11" />
8+
<PackageVersion Include="Microsoft.Extensions.Diagnostics.Testing" Version="8.10.0" />
99
<!-- Tests -->
1010
<PackageVersion Include="xunit" Version="2.9.0" />
1111
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2" />
@@ -14,7 +14,6 @@
1414
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.11.0" />
1515
<PackageVersion Include="EasyNetQ.Management.Client" Version="3.0.0" />
1616
</ItemGroup>
17-
1817
<ItemGroup Condition="$(TargetFramework)=='netstandard2.0'">
1918
<!--
2019
Note: do NOT upgrade these dependencies unless necessary
@@ -25,22 +24,19 @@
2524
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="6.0.0" />
2625
<PackageVersion Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
2726
</ItemGroup>
28-
2927
<ItemGroup Condition="'$(TargetFramework)'=='net6.0'">
3028
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="6.0.0" />
3129
</ItemGroup>
32-
3330
<ItemGroup Condition="'$(TargetFramework)'=='net8.0'">
3431
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="8.0.1" />
32+
<PackageVersion Include="Microsoft.Extensions.Diagnostics" Version="8.0.1" />
3533
</ItemGroup>
36-
3734
<ItemGroup Condition="'$(TargetFrameworkIdentifier)'=='.NETFramework'">
3835
<GlobalPackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" />
3936
</ItemGroup>
40-
4137
<ItemGroup Condition="'$(IsPackable)'=='true'">
4238
<GlobalPackageReference Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="3.3.4" />
4339
<GlobalPackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
4440
<GlobalPackageReference Include="MinVer" Version="5.0.0" />
4541
</ItemGroup>
46-
</Project>
42+
</Project>

RabbitMQ.AMQP.Client/Impl/IMetricsReporter.cs renamed to RabbitMQ.AMQP.Client/IMetricsReporter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using System;
22
using Amqp;
33

4-
namespace RabbitMQ.AMQP.Client.Impl
4+
namespace RabbitMQ.AMQP.Client
55
{
66
public interface IMetricsReporter
77
{

RabbitMQ.AMQP.Client/Impl/AmqpConnection.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,9 @@ public class AmqpConnection : AbstractLifeCycle, IConnection
3636
private readonly RecordingTopologyListener _recordingTopologyListener = new();
3737

3838
internal readonly IConnectionSettings _connectionSettings;
39+
private readonly IMetricsReporter _metricsReporter;
3940
internal readonly AmqpSessionManagement _nativePubSubSessions;
40-
41+
4142
/// <summary>
4243
/// Publishers contains all the publishers created by the connection.
4344
/// Each connection can have multiple publishers.
@@ -93,10 +94,9 @@ public ReadOnlyCollection<IConsumer> GetConsumers()
9394
/// <param name="metricsReporter"></param>
9495
/// <returns></returns>
9596
public static async Task<IConnection> CreateAsync(IConnectionSettings connectionSettings,
96-
IMetricsReporter? metricsReporter = null)
97+
IMetricsReporter? metricsReporter = default)
9798
{
98-
metricsReporter ??= new NoOpMetricsReporter();
99-
var connection = new AmqpConnection(connectionSettings);
99+
var connection = new AmqpConnection(connectionSettings, metricsReporter ?? new NoOpMetricsReporter());
100100
await connection.OpenAsync()
101101
.ConfigureAwait(false);
102102
return connection;
@@ -109,7 +109,7 @@ public IManagement Management()
109109

110110
public IConsumerBuilder ConsumerBuilder()
111111
{
112-
return new AmqpConsumerBuilder(this);
112+
return new AmqpConsumerBuilder(this, _metricsReporter);
113113
}
114114

115115
// TODO cancellation token
@@ -125,7 +125,7 @@ await base.OpenAsync()
125125
public IPublisherBuilder PublisherBuilder()
126126
{
127127
ThrowIfClosed();
128-
var publisherBuilder = new AmqpPublisherBuilder(this);
128+
var publisherBuilder = new AmqpPublisherBuilder(this, _metricsReporter);
129129
return publisherBuilder;
130130
}
131131

@@ -221,9 +221,10 @@ await consumer.CloseAsync()
221221
}
222222
}
223223

224-
private AmqpConnection(IConnectionSettings connectionSettings)
224+
private AmqpConnection(IConnectionSettings connectionSettings, IMetricsReporter metricsReporter)
225225
{
226226
_connectionSettings = connectionSettings;
227+
_metricsReporter = metricsReporter;
227228
_nativePubSubSessions = new AmqpSessionManagement(this, 1);
228229
_management =
229230
new AmqpManagement(new AmqpManagementParameters(this).TopologyListener(_recordingTopologyListener));

RabbitMQ.AMQP.Client/Impl/AmqpConsumer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ private async Task ProcessMessages()
158158

159159
IContext context = new DeliveryContext(_receiverLink, nativeMessage, _unsettledMessageCounter);
160160
var amqpMessage = new AmqpMessage(nativeMessage);
161-
161+
162162
// TODO catch exceptions thrown by handlers,
163163
// then call exception handler?
164164
if (_configuration.Handler != null)

RabbitMQ.AMQP.Client/Impl/AmqpConsumerBuilder.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,11 @@ public class ConsumerConfiguration
3030
public class AmqpConsumerBuilder : IConsumerBuilder
3131
{
3232
private readonly ConsumerConfiguration _configuration = new();
33+
private readonly IMetricsReporter _metricsReporter;
3334

34-
public AmqpConsumerBuilder(AmqpConnection connection)
35+
public AmqpConsumerBuilder(AmqpConnection connection, IMetricsReporter metricsReporter)
3536
{
37+
_metricsReporter = metricsReporter;
3638
_configuration.Connection = connection;
3739
}
3840

@@ -77,13 +79,8 @@ public async Task<IConsumer> BuildAndStartAsync(CancellationToken cancellationTo
7779
{
7880
throw new ConsumerException("Message handler is not set");
7981
}
80-
#if NET6_0_OR_GREATER
81-
IMetricsReporter metricsReporter = new MetricsReporter();
82-
#else
83-
IMetricsReporter metricsReporter = new NoOpMetricsReporter();
84-
#endif
8582

86-
AmqpConsumer consumer = new(_configuration, metricsReporter);
83+
AmqpConsumer consumer = new(_configuration, _metricsReporter);
8784

8885
// TODO pass cancellationToken
8986
await consumer.OpenAsync()

RabbitMQ.AMQP.Client/Impl/AmqpEnvironment.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,27 @@ namespace RabbitMQ.AMQP.Client.Impl
1212
{
1313
public class AmqpEnvironment : IEnvironment
1414
{
15-
private IConnectionSettings? ConnectionSettings { get; }
15+
private IConnectionSettings ConnectionSettings { get; }
1616
private long _sequentialId = 0;
1717
private readonly ConcurrentDictionary<long, IConnection> _connections = new();
18+
private readonly IMetricsReporter? _metricsReporter;
1819

19-
private AmqpEnvironment(IConnectionSettings connectionSettings)
20+
private AmqpEnvironment(IConnectionSettings connectionSettings, IMetricsReporter? metricsReporter)
2021
{
2122
ConnectionSettings = connectionSettings;
23+
_metricsReporter = metricsReporter;
2224
}
2325

24-
public static Task<IEnvironment> CreateAsync(IConnectionSettings connectionSettings)
26+
public static Task<IEnvironment> CreateAsync(IConnectionSettings connectionSettings,
27+
IMetricsReporter? metricsReporter = default)
2528
{
26-
return Task.FromResult<IEnvironment>(new AmqpEnvironment(connectionSettings));
29+
return Task.FromResult<IEnvironment>(new AmqpEnvironment(connectionSettings,
30+
metricsReporter ?? new NoOpMetricsReporter()));
2731
}
2832

2933
public async Task<IConnection> CreateConnectionAsync(IConnectionSettings connectionSettings)
3034
{
31-
IConnection c = await AmqpConnection.CreateAsync(connectionSettings).ConfigureAwait(false);
35+
IConnection c = await AmqpConnection.CreateAsync(connectionSettings,_metricsReporter).ConfigureAwait(false);
3236
c.Id = Interlocked.Increment(ref _sequentialId);
3337
_connections.TryAdd(c.Id, c);
3438
c.ChangeState += (sender, previousState, currentState, failureCause) =>

RabbitMQ.AMQP.Client/Impl/AmqpPublisherBuilder.cs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@ public class AmqpPublisherBuilder : IPublisherBuilder
1515
private string? _key = null;
1616
private string? _queue = null;
1717
private TimeSpan _timeout = TimeSpan.FromSeconds(10);
18+
private readonly IMetricsReporter _metricsReporter;
1819

19-
public AmqpPublisherBuilder(AmqpConnection connection)
20+
public AmqpPublisherBuilder(AmqpConnection connection, IMetricsReporter metricsReporter)
2021
{
2122
_connection = connection;
23+
_metricsReporter = metricsReporter;
2224
}
2325

2426
public IPublisherBuilder Exchange(IExchangeSpecification exchangeSpec)
@@ -67,12 +69,8 @@ public async Task<IPublisher> BuildAsync(CancellationToken cancellationToken = d
6769
{
6870
address = AddressBuilderHelper.AddressBuilder().Exchange(_exchange).Queue(_queue).Key(_key).Address();
6971
}
70-
#if NET6_0_OR_GREATER
71-
IMetricsReporter metricsReporter = new MetricsReporter();
72-
#else
73-
IMetricsReporter metricsReporter = new NoOpMetricsReporter();
74-
#endif
75-
AmqpPublisher publisher = new(_connection, address, metricsReporter, _timeout);
72+
73+
AmqpPublisher publisher = new(_connection, address, _metricsReporter, _timeout);
7674

7775
// TODO pass cancellationToken
7876
await publisher.OpenAsync()

0 commit comments

Comments
 (0)