Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
dotnet-version: [ '6.0' ]
dotnet-version: [ '9.0' ]

steps:
- uses: actions/checkout@v3
Expand All @@ -29,7 +29,7 @@ jobs:
- name: Test
run: dotnet test . --logger trx --results-directory "TestResults-${{ matrix.dotnet-version }}"
- name: Upload test results
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: dotnet-results-${{ matrix.dotnet-version }}
path: TestResults-${{ matrix.dotnet-version }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/deploy-nuget.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-dotnet@v2
with:
dotnet-version: '6.0.x'
dotnet-version: '9.0.x'
- run: dotnet build --configuration Release .
- name: Create the packages
run: |
Expand Down
1 change: 1 addition & 0 deletions Jamq.Client.sln
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "solution-items", "solution-
ProjectSection(SolutionItems) = preProject
src\Directory.Build.props = src\Directory.Build.props
README.md = README.md
src\Directory.Packages.props = src\Directory.Packages.props
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{042A1773-4B2B-4D52-A296-9A116CA2594C}"
Expand Down
2 changes: 2 additions & 0 deletions src/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
<Authors>quilin</Authors>
<Owners>quilin</Owners>
<PackageTags>RabbitMQ, Kafka, Client</PackageTags>
<LangVersion>10</LangVersion>
<RepositoryUrl>https://github.com/quilin/Jamq.Client</RepositoryUrl>
<PackageProjectUrl>https://github.com/quilin/Jamq.Client</PackageProjectUrl>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>

<ItemGroup>
Expand Down
18 changes: 18 additions & 0 deletions src/Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<Project>
<ItemGroup>
<PackageVersion Include="Confluent.Kafka" Version="2.12.0"/>
<PackageVersion Include="coverlet.collector" Version="6.0.4"/>
<PackageVersion Include="FluentAssertions" Version="7.2.0"/>
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="10.0.1"/>
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.1"/>
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.1"/>
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.1"/>
<PackageVersion Include="Moq" Version="4.20.72"/>
<PackageVersion Include="OpenTelemetry" Version="1.14.0"/>
<PackageVersion Include="RabbitMQ.Client" Version="6.8.1"/>
<PackageVersion Include="xunit" Version="2.9.3"/>
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5"/>
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="10.0.1"/>
<PackageVersion Include="System.Text.Json" Version="10.0.1"/>
</ItemGroup>
</Project>
3 changes: 3 additions & 0 deletions src/Jamq.Client.Abstractions/Consuming/IsExternalInit.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
namespace System.Runtime.CompilerServices;

internal static class IsExternalInit {}
5 changes: 3 additions & 2 deletions src/Jamq.Client.Abstractions/Jamq.Client.Abstractions.csproj
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>netstandard2.1</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>true</IsPackable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" />
<PackageReference Include="System.Diagnostics.DiagnosticSource" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>netstandard2.1</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>true</IsPackable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>netstandard2.1</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>true</IsPackable>
Expand Down
7 changes: 4 additions & 3 deletions src/Jamq.Client.Kafka/Jamq.Client.Kafka.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>netstandard2.1</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>true</IsPackable>
Expand All @@ -14,8 +14,9 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Confluent.Kafka" Version="1.9.2" />
<PackageReference Include="OpenTelemetry" Version="1.3.1" />
<PackageReference Include="Confluent.Kafka" />
<PackageReference Include="OpenTelemetry" />
<PackageReference Include="System.Text.Json" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>netstandard2.1</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>true</IsPackable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="OpenTelemetry" Version="1.3.1" />
<PackageReference Include="OpenTelemetry" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>netstandard2.1</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>true</IsPackable>
Expand Down
5 changes: 2 additions & 3 deletions src/Jamq.Client.Rabbit/Ensure.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
using Jamq.Client.Rabbit.Consuming;
using Jamq.Client.Rabbit.Producing;
using RabbitMQ.Client;
using System.Collections.Immutable;

namespace Jamq.Client.Rabbit;

Expand All @@ -23,11 +22,11 @@ public static QueueDeclareOk Consume(IModel channel, RabbitConsumerParameters pa
exchange: parameters.ExchangeName,
type: parameters.ExchangeType.ToString().ToLower(),
durable: true,
arguments: parameters.AdditionalExchangeArguments ?? ImmutableDictionary<string, object>.Empty);
arguments: parameters.AdditionalExchangeArguments ?? new Dictionary<string, object>());
}

var queueArguments = new Dictionary<string, object>(
parameters.AdditionalQueueArguments ?? ImmutableDictionary<string, object>.Empty);
parameters.AdditionalQueueArguments ?? new Dictionary<string, object>());

var queueName = parameters.Exclusive
? parameters.QueueName.WithRandomSuffix()
Expand Down
9 changes: 5 additions & 4 deletions src/Jamq.Client.Rabbit/Jamq.Client.Rabbit.csproj
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>netstandard2.1</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>true</IsPackable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.1" />
<PackageReference Include="OpenTelemetry" Version="1.3.1" />
<PackageReference Include="RabbitMQ.Client" Version="6.3.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" />
<PackageReference Include="OpenTelemetry" />
<PackageReference Include="RabbitMQ.Client" />
<PackageReference Include="System.Text.Json" />
</ItemGroup>

<ItemGroup>
Expand Down
18 changes: 9 additions & 9 deletions src/Jamq.Client.Tests/Jamq.Client.Tests.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>

Expand All @@ -11,17 +11,17 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="FluentAssertions" Version="6.7.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
<PackageReference Include="Moq" Version="4.18.1" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
<PackageReference Include="FluentAssertions" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" />
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="Moq" />
<PackageReference Include="xunit" />
<PackageReference Include="xunit.runner.visualstudio">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="3.1.2">
<PackageReference Include="coverlet.collector">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
Expand Down
7 changes: 1 addition & 6 deletions src/Jamq.Client.Tests/Rabbit/RabbitConsumerBuilderShould.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
using Jamq.Client.Rabbit.Producing;
using Microsoft.Extensions.DependencyInjection;
using Moq;
using Xunit.Abstractions;

namespace Jamq.Client.Tests.Rabbit;

Expand All @@ -17,8 +16,7 @@ public class RabbitConsumerBuilderShould : IClassFixture<RabbitFixture>
private readonly Mock<ITestCaller> caller;

public RabbitConsumerBuilderShould(
RabbitFixture fixture,
ITestOutputHelper testOutputHelper)
RabbitFixture fixture)
{
this.fixture = fixture;
caller = new Mock<ITestCaller>();
Expand All @@ -27,14 +25,11 @@ public RabbitConsumerBuilderShould(
fixture.ServiceCollection.AddScoped<Processor>();
fixture.ServiceCollection.AddScoped<SpecificWrongInterfacedMiddleware>();

DiagnosticListener.AllListeners.Subscribe(new RabbitFixture.Subscriber(testOutputHelper));
ActivitySource.AddActivityListener(new ActivityListener
{
ShouldListenTo = s => s.Name == Event.SourceName,
SampleUsingParentId = (ref ActivityCreationOptions<string> _) => ActivitySamplingResult.AllData,
Sample = (ref ActivityCreationOptions<ActivityContext> _) => ActivitySamplingResult.AllData,
ActivityStarted = activity => testOutputHelper.WriteLine($"Activity {activity.DisplayName}:{activity.Id} started at {activity.StartTimeUtc:O}"),
ActivityStopped = activity => testOutputHelper.WriteLine($"Activity {activity.DisplayName}:{activity.Id} stopped at {activity.StartTimeUtc + activity.Duration:O} (after {activity.Duration:g})"),
});
}

Expand Down
51 changes: 1 addition & 50 deletions src/Jamq.Client.Tests/Rabbit/RabbitFixture.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System.Diagnostics;
using Jamq.Client.Abstractions.Consuming;
using Jamq.Client.Abstractions.Diagnostics;
using Jamq.Client.Abstractions.Consuming;
using Jamq.Client.Abstractions.Producing;
using Jamq.Client.DependencyInjection;
using Jamq.Client.Rabbit;
Expand All @@ -9,7 +7,6 @@
using Moq;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using Xunit.Abstractions;

namespace Jamq.Client.Tests.Rabbit;

Expand Down Expand Up @@ -82,50 +79,4 @@ public RabbitFixture()
public void Dispose()
{
}

internal class Subscriber : IObserver<DiagnosticListener>
{
private readonly ITestOutputHelper testOutputHelper;

public Subscriber(ITestOutputHelper testOutputHelper)
{
this.testOutputHelper = testOutputHelper;
}

public void OnCompleted()
{
}

public void OnError(Exception error)
{
}

public void OnNext(DiagnosticListener value)
{
if (value.Name == Event.SourceName)
{
value.Subscribe(new Listener(testOutputHelper));
}
}
}

private class Listener : IObserver<KeyValuePair<string, object?>>
{
private readonly ITestOutputHelper testOutputHelper;

public Listener(ITestOutputHelper testOutputHelper)
{
this.testOutputHelper = testOutputHelper;
}

public void OnCompleted()
{
}

public void OnError(Exception error)
{
}

public void OnNext(KeyValuePair<string, object?> keyValue) => testOutputHelper.WriteLine($"{keyValue.Key} - {keyValue.Value}");
}
}
2 changes: 1 addition & 1 deletion src/Jamq.Client/Consuming/ConsumerBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ public IConsumerBuilder Flush()

var parameters = methodInfo.GetParameters();
if (parameters.Length < 2 ||
!parameters.First().ParameterType.IsAssignableTo(typeof(ConsumerContext)) ||
!typeof(ConsumerContext).IsAssignableFrom(parameters[0].ParameterType) ||
parameters.Last().ParameterType != typeof(CancellationToken))
{
throw ConsumerBuilderMiddlewareConventionException.MismatchParameters(type);
Expand Down
4 changes: 2 additions & 2 deletions src/Jamq.Client/Jamq.Client.csproj
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>netstandard2.1</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>true</IsPackable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" />
</ItemGroup>

<ItemGroup>
Expand Down
9 changes: 9 additions & 0 deletions src/Jamq.Client/MethodInfoExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
using System.Reflection;

namespace Jamq.Client;

internal static class MethodInfoExtensions
{
public static TResult CreateDelegate<TResult>(this MethodInfo methodInfo, object instance)
where TResult : Delegate => (TResult)methodInfo.CreateDelegate(typeof(TResult), instance);
}
4 changes: 2 additions & 2 deletions src/Jamq.Client/Producing/ProducerBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ public IProducerBuilder Flush()

var parameters = methodInfo.GetParameters();
if (parameters.Length < 2 ||
!parameters.First().ParameterType.IsAssignableTo(typeof(ProducerContext)) ||
!typeof(ProducerContext).IsAssignableFrom(parameters.First().ParameterType) ||
parameters.Last().ParameterType != typeof(CancellationToken))
{
throw ProducerBuilderMiddlewareConventionException.MismatchParameters(type);
Expand All @@ -160,7 +160,7 @@ public IProducerBuilder Flush()
(context, ct) => next((ProducerContext<TKey, TMessage, TNativeProperties>)context, ct));
if (parameters.Length == 2)
{
return methodInfo.CreateDelegate<ProducerDelegate>(instance).Invoke;
return ((ProducerDelegate) methodInfo.CreateDelegate(typeof(ProducerDelegate), instance)).Invoke;
}

var factory = MiddlewareCompiler
Expand Down