Skip to content

Commit 76f7921

Browse files
committed
Improved stability and critical exception reporting.
1 parent 70c8f08 commit 76f7921

16 files changed

Lines changed: 344 additions & 258 deletions

File tree

CatMQ.Service/CatMQ.Service.csproj

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,36 @@
11
<Project Sdk="Microsoft.NET.Sdk.Web">
2+
<PropertyGroup>
3+
<TargetFrameworks>net10.0;</TargetFrameworks>
4+
<Nullable>enable</Nullable>
5+
<ImplicitUsings>enable</ImplicitUsings>
6+
<version>2.6.6</version>
7+
<ApplicationIcon>Logo.ico</ApplicationIcon>
28

3-
<PropertyGroup>
4-
<TargetFrameworks>net10.0;</TargetFrameworks>
5-
<Nullable>enable</Nullable>
6-
<ImplicitUsings>enable</ImplicitUsings>
7-
<version>2.6.5</version>
8-
<ApplicationIcon>Logo.ico</ApplicationIcon>
9-
</PropertyGroup>
9+
<Copyright>Copyright © 2026 NetworkDLS</Copyright>
10+
<Description>
11+
A high-performance and reliable persistent message queue designed for efficient inter-process communication, task queuing, load balancing, and data buffering over TCP/IP.
12+
</Description>
13+
<Authors>NetworkDLS</Authors>
14+
<Company>NetworkDLS</Company>
15+
</PropertyGroup>
1016

11-
<PropertyGroup Condition="'$(RuntimeIdentifier)' == 'win-x64'">
12-
<DefineConstants>WINDOWS</DefineConstants>
13-
</PropertyGroup>
17+
<PropertyGroup Condition="'$(RuntimeIdentifier)' == 'win-x64'">
18+
<DefineConstants>WINDOWS</DefineConstants>
19+
</PropertyGroup>
1420

15-
<ItemGroup>
16-
<Content Include="Logo.ico" />
17-
</ItemGroup>
21+
<ItemGroup>
22+
<Content Include="Logo.ico" />
23+
</ItemGroup>
1824

19-
<ItemGroup>
20-
<PackageReference Include="RocksDB" Version="10.4.2.62659" />
21-
<PackageReference Include="Serilog.Settings.Configuration" Version="10.0.0" />
22-
<PackageReference Include="Serilog.Sinks.Console" Version="6.1.1" />
23-
<PackageReference Include="Topshelf" Version="4.3.0" />
24-
</ItemGroup>
25+
<ItemGroup>
26+
<PackageReference Include="RocksDB" Version="10.4.2.64152" />
27+
<PackageReference Include="Serilog.Settings.Configuration" Version="10.0.0" />
28+
<PackageReference Include="Serilog.Sinks.Console" Version="6.1.1" />
29+
<PackageReference Include="Topshelf" Version="4.3.0" />
30+
</ItemGroup>
2531

26-
<ItemGroup>
27-
<ProjectReference Include="..\NTDLS.CatMQ.Server\NTDLS.CatMQ.Server.csproj" />
28-
</ItemGroup>
32+
<ItemGroup>
33+
<ProjectReference Include="..\NTDLS.CatMQ.Server\NTDLS.CatMQ.Server.csproj" />
34+
</ItemGroup>
2935

3036
</Project>

CatMQ.Service/Pages/Index.cshtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
4646
function buildRow(queue) {
4747
return `
48-
<tr>
48+
<tr${queue.errorMessage ? ' class="table-danger"' : ''}>
4949
<td><a href="/queue/${queue.queueName}">${queue.queueName}</a></td>
5050
<td class="text-end">${queue.currentSubscriberCount}</td>
5151
<td class="text-end"><a href="/messages/${queue.queueName}">${queue.queueDepth}</a></td>

CatMQ.Service/Pages/Index.cshtml.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public JsonResult OnGetQueues()
5454

5555
queueRecords.Add(new
5656
{
57+
errorMessage = queue.ErrorMessage,
5758
queueName = queue.QueueName,
5859
currentSubscriberCount = queue.CurrentSubscriberCount.ToString("n0"),
5960
queueDepth = queue.QueueDepth.ToString("n0"),

CatMQ.Service/Pages/Queue.cshtml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,18 @@
200200
<div>
201201
<h6 class="display-6">@Model.QueueName</h6>
202202

203+
@if (string.IsNullOrEmpty(@Model.QueueErrorMessage) == false)
204+
{
205+
<div class="card shadow-lg mt-2 border-danger">
206+
<div class="card-header text-danger">
207+
<h5>Critical Queue Error</h5>
208+
</div>
209+
<div class="card-body d-flex align-items-center">
210+
@Model.QueueErrorMessage
211+
</div>
212+
</div>
213+
}
214+
203215
<div class="card shadow-lg mt-2">
204216
<div class="card-header">
205217
<h5>Configuration</h5>

CatMQ.Service/Pages/Queue.cshtml.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,17 @@ public class QueueModel(ILogger<QueueModel> logger, CMqServer mqServer) : BasePa
1212
[BindProperty(SupportsGet = true)]
1313
public string QueueName { get; set; } = string.Empty;
1414

15+
public string? QueueErrorMessage { get; set; } = string.Empty;
16+
1517
private readonly ILogger<QueueModel> _logger = logger;
1618

1719
public void OnGet()
1820
{
1921
try
2022
{
21-
//Get the queue name (case insensitive) from the server to ensure it exists.
22-
QueueName = mqServer.GetQueue(QueueName)?.QueueName ?? string.Empty;
23+
var queue = mqServer.GetQueue(QueueName);
24+
QueueName = queue?.QueueName ?? string.Empty;
25+
QueueErrorMessage = queue?.ErrorMessage;
2326
}
2427
catch (Exception ex)
2528
{

CatMQ.Service/Pages/Queues.cshtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
3434
function buildRow(queue) {
3535
return `
36-
<tr>
36+
<tr${queue.errorMessage ? ' class="table-danger"' : ''}>
3737
<td><a href="/queue/${queue.queueName}">${queue.queueName}</a></td>
3838
<td class="text-end">${queue.currentSubscriberCount}</td>
3939
<td class="text-end"><a href="/messages/${queue.queueName}">${queue.queueDepth}</a></td>

CatMQ.Service/Pages/Queues.cshtml.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
namespace CatMQ.Service.Pages
77
{
88
[Authorize]
9-
109
public class QueuesModel(ILogger<QueuesModel> logger, CMqServer mqServer) : BasePageModel
1110
{
1211
private readonly ILogger<QueuesModel> _logger = logger;
@@ -33,7 +32,7 @@ public JsonResult OnGetQueues()
3332
{
3433
records.Add(new
3534
{
36-
35+
errorMessage = queue.ErrorMessage,
3736
queueName = queue.QueueName,
3837
currentSubscriberCount = queue.CurrentSubscriberCount.ToString("n0"),
3938
queueDepth = queue.QueueDepth.ToString("n0"),

CatMQ.Tests/CatMQ.Tests.csproj

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

3-
<PropertyGroup>
4-
<TargetFrameworks>net10.0;</TargetFrameworks>
5-
<ImplicitUsings>enable</ImplicitUsings>
6-
<Nullable>enable</Nullable>
3+
<PropertyGroup>
4+
<TargetFrameworks>net10.0;</TargetFrameworks>
5+
<ImplicitUsings>enable</ImplicitUsings>
6+
<Nullable>enable</Nullable>
77

8-
<IsPackable>false</IsPackable>
9-
<IsTestProject>true</IsTestProject>
10-
</PropertyGroup>
8+
<IsPackable>false</IsPackable>
9+
<IsTestProject>true</IsTestProject>
10+
</PropertyGroup>
1111

12-
<ItemGroup>
13-
<Compile Remove="Data\**" />
14-
<EmbeddedResource Remove="Data\**" />
15-
<None Remove="Data\**" />
16-
</ItemGroup>
12+
<ItemGroup>
13+
<Compile Remove="Data\**" />
14+
<EmbeddedResource Remove="Data\**" />
15+
<None Remove="Data\**" />
16+
</ItemGroup>
1717

18-
<ItemGroup>
19-
<PackageReference Include="coverlet.collector" Version="6.0.4">
20-
<PrivateAssets>all</PrivateAssets>
21-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
22-
</PackageReference>
23-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
24-
<PackageReference Include="xunit" Version="2.9.3" />
25-
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
26-
<PrivateAssets>all</PrivateAssets>
27-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
28-
</PackageReference>
29-
</ItemGroup>
18+
<ItemGroup>
19+
<PackageReference Include="coverlet.collector" Version="8.0.0">
20+
<PrivateAssets>all</PrivateAssets>
21+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
22+
</PackageReference>
23+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.3.0" />
24+
<PackageReference Include="xunit" Version="2.9.3" />
25+
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
26+
<PrivateAssets>all</PrivateAssets>
27+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
28+
</PackageReference>
29+
</ItemGroup>
3030

31-
<ItemGroup>
32-
<ProjectReference Include="..\NTDLS.CatMQ.Client\NTDLS.CatMQ.Client.csproj" />
33-
<ProjectReference Include="..\NTDLS.CatMQ.Server\NTDLS.CatMQ.Server.csproj" />
34-
</ItemGroup>
31+
<ItemGroup>
32+
<ProjectReference Include="..\NTDLS.CatMQ.Client\NTDLS.CatMQ.Client.csproj" />
33+
<ProjectReference Include="..\NTDLS.CatMQ.Server\NTDLS.CatMQ.Server.csproj" />
34+
</ItemGroup>
3535

36-
<ItemGroup>
37-
<Using Include="Xunit" />
38-
</ItemGroup>
36+
<ItemGroup>
37+
<Using Include="Xunit" />
38+
</ItemGroup>
3939

4040
</Project>

Installers/Windows.Installer.iss

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
#define AppVersion "2.6.4"
1+
#define AppVersion "2.6.6"
22

33
[Setup]
44
;-- Main Setup Information
55
AppName = CatMQ
66
AppVersion = {#AppVersion}
77
AppVerName = CatMQ {#AppVersion}
8-
AppCopyright = Copyright © 1995-2025 NetworkDLS.
8+
AppCopyright = Copyright © 1995-2026 NetworkDLS.
99
DefaultDirName = {commonpf}\NetworkDLS\CatMQ
1010
DefaultGroupName = NetworkDLS\CatMQ
1111
UninstallDisplayIcon = {app}\CatMQ.Service.exe
Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,53 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

3-
<PropertyGroup>
4-
<ImplicitUsings>enable</ImplicitUsings>
5-
<Nullable>enable</Nullable>
6-
<TargetFrameworks>net8.0;net9.0;net10.0;</TargetFrameworks>
7-
<GenerateDocumentationFile>true</GenerateDocumentationFile>
8-
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
9-
<Title>NTDLS.CatMQ.Client</Title>
10-
<Copyright>Copyright © 2025 NetworkDLS</Copyright>
11-
<Description>
12-
A high-performance and reliable persistent message queue designed for efficient inter-process communication, task queuing, load balancing, and data buffering over TCP/IP.
13-
</Description>
14-
<PackageProjectUrl>https://github.com/NTDLS/NTDLS.CatMQ</PackageProjectUrl>
15-
<RepositoryUrl>https://github.com/NTDLS/NTDLS.CatMQ</RepositoryUrl>
16-
<PackageTags>ipc;message-queue;inter-process-communication;tcp-ip;message-broker;mq;</PackageTags>
17-
<PackageReleaseNotes>
18-
Additional overloads async Enqueue methods.
19-
</PackageReleaseNotes>
20-
<RepositoryType>git</RepositoryType>
21-
<PackageLicenseExpression>MIT</PackageLicenseExpression>
22-
<Authors>NetworkDLS</Authors>
23-
<Company>NetworkDLS</Company>
24-
<version>2.6.5</version>
25-
<PackageReadmeFile>README.md</PackageReadmeFile>
26-
<PackageIcon>Logo.png</PackageIcon>
27-
<ApplicationIcon>Logo.ico</ApplicationIcon>
28-
<IncludeSymbols>True</IncludeSymbols>
29-
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
30-
</PropertyGroup>
31-
32-
<ItemGroup>
33-
<Content Include="Logo.ico">
34-
<Pack>False</Pack>
35-
</Content>
36-
</ItemGroup>
3+
<PropertyGroup>
4+
<ImplicitUsings>enable</ImplicitUsings>
5+
<Nullable>enable</Nullable>
6+
<TargetFrameworks>net8.0;net9.0;net10.0;</TargetFrameworks>
7+
<GenerateDocumentationFile>true</GenerateDocumentationFile>
8+
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
9+
<Title>NTDLS.CatMQ.Client</Title>
10+
<Copyright>Copyright © 2026 NetworkDLS</Copyright>
11+
<Description>
12+
A high-performance and reliable persistent message queue designed for efficient inter-process communication, task queuing, load balancing, and data buffering over TCP/IP.
13+
</Description>
14+
<PackageProjectUrl>https://github.com/NTDLS/NTDLS.CatMQ</PackageProjectUrl>
15+
<RepositoryUrl>https://github.com/NTDLS/NTDLS.CatMQ</RepositoryUrl>
16+
<PackageTags>ipc;message-queue;inter-process-communication;tcp-ip;message-broker;mq;</PackageTags>
17+
<PackageReleaseNotes>
18+
Improved stability and error reporting.
19+
</PackageReleaseNotes>
20+
<RepositoryType>git</RepositoryType>
21+
<PackageLicenseExpression>MIT</PackageLicenseExpression>
22+
<Authors>NetworkDLS</Authors>
23+
<Company>NetworkDLS</Company>
24+
<version>2.6.6</version>
25+
<PackageReadmeFile>README.md</PackageReadmeFile>
26+
<PackageIcon>Logo.png</PackageIcon>
27+
<ApplicationIcon>Logo.ico</ApplicationIcon>
28+
<IncludeSymbols>True</IncludeSymbols>
29+
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
30+
</PropertyGroup>
3731

38-
<ItemGroup>
39-
<None Include="..\Images\Logo.png">
40-
<Pack>True</Pack>
41-
<PackagePath>\</PackagePath>
42-
</None>
43-
<None Include="..\README.md">
44-
<Pack>True</Pack>
45-
<PackagePath>\</PackagePath>
46-
</None>
47-
</ItemGroup>
32+
<ItemGroup>
33+
<Content Include="Logo.ico">
34+
<Pack>False</Pack>
35+
</Content>
36+
</ItemGroup>
4837

49-
<ItemGroup>
50-
<ProjectReference Include="..\NTDLS.CatMQ.Shared\NTDLS.CatMQ.Shared.csproj" />
51-
</ItemGroup>
38+
<ItemGroup>
39+
<None Include="..\Images\Logo.png">
40+
<Pack>True</Pack>
41+
<PackagePath>\</PackagePath>
42+
</None>
43+
<None Include="..\README.md">
44+
<Pack>True</Pack>
45+
<PackagePath>\</PackagePath>
46+
</None>
47+
</ItemGroup>
48+
49+
<ItemGroup>
50+
<ProjectReference Include="..\NTDLS.CatMQ.Shared\NTDLS.CatMQ.Shared.csproj" />
51+
</ItemGroup>
5252

5353
</Project>

0 commit comments

Comments
 (0)