Skip to content

Commit 0661ede

Browse files
committed
Add support for .NET 6
1 parent ec3a66b commit 0661ede

File tree

5 files changed

+88
-108
lines changed

5 files changed

+88
-108
lines changed

src/Savorboard.CAP.InMemoryMessageQueue/InMemoryQueue.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Collections.Generic;
1+
using System;
2+
using System.Collections.Generic;
23
using System.Linq;
34
using DotNetCore.CAP.Messages;
45
using Microsoft.Extensions.Logging;
@@ -73,6 +74,11 @@ public void Send(TransportMessage message)
7374
}
7475
}
7576
}
77+
else
78+
{
79+
throw new InvalidOperationException(
80+
$"Cannot find the corresponding group for {name}. Have you subscribed?");
81+
}
7682
}
7783
}
7884
}

src/Savorboard.CAP.InMemoryMessageQueue/Savorboard.CAP.InMemoryMessageQueue.csproj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net8</TargetFramework>
4+
<TargetFrameworks>net6;net8</TargetFrameworks>
5+
<LangVersion>latest</LangVersion>
56
</PropertyGroup>
67

78
<ItemGroup>
@@ -32,7 +33,7 @@
3233
<PublishRepositoryUrl>true</PublishRepositoryUrl>
3334
<EmbedUntrackedSources>true</EmbedUntrackedSources>
3435
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
35-
<Version>8.2.0</Version>
36+
<Version>8.2.1</Version>
3637
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
3738
</PropertyGroup>
3839

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
using System.Threading;
5+
using System.Threading.Tasks;
6+
using DotNetCore.CAP.Internal;
7+
using DotNetCore.CAP.Messages;
8+
using Microsoft.Extensions.Logging;
9+
using Microsoft.Extensions.Logging.Abstractions;
10+
using Savorboard.CAP.InMemoryMessageQueue;
11+
using Xunit;
12+
using Xunit.Abstractions;
13+
14+
namespace InMemoryQueueTest
15+
{
16+
public class ConsumerClientTests(ITestOutputHelper output)
17+
{
18+
[Fact]
19+
public void QueueNotSubscribeTest()
20+
{
21+
var logger = NullLoggerFactory.Instance.CreateLogger<InMemoryQueue>();
22+
var groupId = "test-group";
23+
var topic = "test-topic";
24+
var content = "test content";
25+
26+
var queue = new InMemoryQueue(logger);
27+
queue.Subscribe(groupId, [topic]);
28+
var headers = new Dictionary<string, string>();
29+
var messageId = new SnowflakeId().NextId().ToString();
30+
headers.Add(Headers.MessageId, messageId);
31+
headers.Add(Headers.MessageName, topic + "-assert");
32+
Assert.Throws<InvalidOperationException>(() => queue.Send(new TransportMessage(headers, Encoding.UTF8.GetBytes(content))));
33+
}
34+
35+
[Fact]
36+
public void SendMessageTest()
37+
{
38+
var logger = NullLoggerFactory.Instance.CreateLogger<InMemoryQueue>();
39+
var groupId = "test-group";
40+
var topic = "test-topic";
41+
var content = "test content";
42+
43+
var queue = new InMemoryQueue(logger);
44+
var headers = new Dictionary<string, string>();
45+
46+
var messageId = new SnowflakeId().NextId().ToString();
47+
headers.Add(Headers.MessageId, messageId);
48+
headers.Add(Headers.MessageName, topic);
49+
headers.Add(Headers.Type, typeof(string).FullName);
50+
headers.Add(Headers.SentTime, DateTimeOffset.Now.ToString());
51+
if (headers.TryAdd(Headers.CorrelationId, messageId))
52+
{
53+
headers.Add(Headers.CorrelationSequence, 0.ToString());
54+
}
55+
var transportMsg = new TransportMessage(headers, Encoding.UTF8.GetBytes(content));
56+
57+
ManualResetEventSlim reset = new(false);
58+
var client = new InMemoryConsumerClient(logger, queue, groupId, 1)
59+
{
60+
OnMessageCallback = (x, obj) =>
61+
{
62+
output.WriteLine($"Received message: {Encoding.UTF8.GetString(x.Body.ToArray())}");
63+
Assert.Equal(content, Encoding.UTF8.GetString(x.Body.ToArray()));
64+
reset.Set();
65+
return Task.CompletedTask;
66+
}
67+
};
68+
69+
client.Subscribe([topic]);
70+
71+
Task.Run(() => client.Listening(TimeSpan.FromSeconds(10), default));
72+
73+
queue.Send(transportMsg);
74+
75+
reset.Wait();
76+
}
77+
}
78+
}

test/InMemoryQueueTest/InMemoryConsumerClientTests.cs

Lines changed: 0 additions & 48 deletions
This file was deleted.

test/InMemoryQueueTest/InMemoryQueueTest.cs

Lines changed: 0 additions & 57 deletions
This file was deleted.

0 commit comments

Comments
 (0)