Skip to content

Instantly share code, notes, and snippets.

View ramonsmits's full-sized avatar

Ramon Smits ramonsmits

View GitHub Profile
@ramonsmits
ramonsmits / LoggerScopeBehavior.cs
Last active January 21, 2026 15:20
NServiceBus behavior that uses Microsoft.Extensions.Logging to create a logger scope containing incoming message identifier and processing identifier
//
// 1. Register the type in the host builder:
//
// builder.Services.AddSingleton<LoggerScopeBehavior>();
//
// 2. Register the behavior in NServiceBus:
//
// endpointConfiguration.Pipeline.Register<LoggerScopeBehavior>(b => b.GetRequiredService<LoggerScopeBehavior>(), nameof(LoggerScopeBehavior));
//
// DOES NOT USE THE NSERVICEBUS LOGGING ABSTRACTION AS THIS DOES NOT SUPPORT `.BeginScope`
@ramonsmits
ramonsmits / HOWTO.md
Last active January 8, 2026 16:52
Install .NET 10 on Raspberry pi
@ramonsmits
ramonsmits / LogIncomingMessageDetails.cs
Last active November 20, 2025 12:54
NServiceBus behavior that logs incoming message details
//
// Register as:
//
// endpointConfiguration.Pipeline.Register(new LogIncomingMessageDetails(), nameof(LogIncomingMessageDetails));
//
sealed class LogIncomingMessageDetails : Behavior<IIncomingPhysicalMessageContext>
{
static readonly ILog logger = LogManager.GetLogger<LogIncomingMessageDetails>();
public override async Task Invoke(IIncomingPhysicalMessageContext context, Func<Task> next)
@ramonsmits
ramonsmits / FriendlyNames.cs
Last active September 23, 2025 16:08
Generate readable/memorable random names
using System;
using System.Numerics;
class FriendlyNames
{
static readonly string[] Adj =
[
"brave","silent","curious","mighty","witty","gloomy","rapid","fuzzy",
"gentle","arcane","rusty","lunar","zen","feral","candid","sleek",
"fiery","icy","stormy","cosmic","sinister","savage","naughty","vicious",
@ramonsmits
ramonsmits / ServiceControlCleanup.cs
Created June 18, 2025 13:06
ServiceControl cleanup FailedMessages based on `AddressOfFailingEndpoint`
using Raven.Client.Documents;
using Raven.Client.Documents.Operations;
string FailingEndpointName = args.Length >= 1
? args[0]
: throw new ArgumentException("Missing endpoint name");
int ChunkSize = args.Length >= 2 ? int.Parse(args[1]) : 10000;
@ramonsmits
ramonsmits / WatchdogFeature.cs
Created June 10, 2025 08:51
NServiceBus - Watchdog that will execute a FailFast is no message processing happened for 5 minutes
sealed class WatchdogBehavior : Behavior<IIncomingLogicalMessageContext>, IDisposable
{
static readonly TimeSpan watchdogTimeout = TimeSpan.FromMinutes(5);
static volatile long lastActivityTicks = DateTime.UtcNow.Ticks;
static Thread? watchdogThread;
static CancellationTokenSource? cancellationTokenSource;
public WatchdogBehavior()
{
StartWatchdog();
@ramonsmits
ramonsmits / HeartbeatTouchBehavior.cs
Created June 10, 2025 08:28
NServiceBus - Touch a heartbeat file for external watchdog like monitoring
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using NServiceBus.Pipeline;
sealed class HeartbeatTouchBehavior : Behavior<IIncomingLogicalMessageContext>
{
static readonly string filePath = "C:/watchdog/heartbeat.txt";
static readonly TimeSpan interval = TimeSpan.FromMinutes(1);
@ramonsmits
ramonsmits / LoggerScopeBehavior.cs
Last active June 4, 2025 11:55
NServiceBus - Create a logger scope for every incoming message so each log entry can be correlated to a incomming message processing attempt
using System;
using System.ComponentModel;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using NServiceBus;
using NServiceBus.Pipeline;
[Description("Create a logger scope for every incoming message with incoming message processing attemps meta data so this is logged with every log statement")]
@ramonsmits
ramonsmits / platform-queues.md
Last active May 29, 2025 12:17
Particular platfrom queue ownership

Queues used by the various Particular Platform instances

Queue Error Audit Monitoring
audit CR
error CR
particular.monitoring CR
particular.servicecontrol CR W
particular.servicecontrol.errors CW
@ramonsmits
ramonsmits / btrfs-snapshots.md
Created May 19, 2025 11:03
Create, list, and delete Btrfs snapshots

Create

sudo btrfs subvolume snapshot / /.snapshots/$(date +%F_%T)

Delete

sudo btrfs subvolume delete /.snapshots/2024-05-19_14:22:31

List

sudo btrfs subvolume list /