Skip to content

Update to DotNetWorkQueue 0.9.43; use AesMessageInterceptor#3

Merged
blehnen merged 1 commit into
mainfrom
update-to-0.9.43-aes
Jul 7, 2026
Merged

Update to DotNetWorkQueue 0.9.43; use AesMessageInterceptor#3
blehnen merged 1 commit into
mainfrom
update-to-0.9.43-aes

Conversation

@blehnen

@blehnen blehnen commented Jul 7, 2026

Copy link
Copy Markdown
Owner

Updates the samples to the newly published 0.9.43 and switches the encryption sample from the deprecated 3DES interceptor to AES-256-GCM.

Changes

  • SampleShared/Injectors.csTripleDesMessageInterceptorAesMessageInterceptor (AES-256-GCM; 32-byte key, no IV). The des parameter is renamed encryption.
  • DotNetWorkQueue* package references bumped 0.9.380.9.43.
  • Transitive dependency alignment required by 0.9.43 (fixes NU1605 downgrade errors):
    • Microsoft.Extensions.* 10.0.810.0.9
    • OpenTelemetry / OpenTelemetry.Api / exporters 1.15.31.16.0
    • StackExchange.Redis 2.13.173.0.7

Verification

All sample solutions build clean against 0.9.43: SampleShared, LiteDb, SQLServer, Redis, PostgreSQL, SQLite, DashBoard.Api, IntegrationTests.

Closes #2

Summary by CodeRabbit

  • New Features

    • Updated sample messaging flows to support AES-based encryption.
  • Bug Fixes

    • Refreshed sample app dependencies across database, Redis, and dashboard demos for improved compatibility and stability.
    • Updated telemetry and logging packages to newer versions.
  • Chores

    • Bumped shared package versions throughout the sample projects.

- Bump DotNetWorkQueue packages 0.9.38 -> 0.9.43.
- Injectors: replace the deprecated TripleDesMessageInterceptor with
  AesMessageInterceptor (AES-256-GCM; 32-byte key, no IV).
- Align transitive deps required by 0.9.43: Microsoft.Extensions.* 10.0.8 ->
  10.0.9, OpenTelemetry* 1.15.3 -> 1.16.0, StackExchange.Redis 2.13.17 -> 3.0.7.

All sample solutions build clean against 0.9.43.

Closes #2

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

This PR bumps NuGet package versions (DotNetWorkQueue 0.9.38→0.9.43, Microsoft.Extensions.* 10.0.8→10.0.9, OpenTelemetry 1.15.3→1.16.0, StackExchange.Redis 2.13.17→3.0.7, Dashboard.Client) across all sample .csproj files, and replaces TripleDES with AES-based message encryption in SampleShared/Injectors.cs.

Changes

Sample project dependency bumps

Layer / File(s) Summary
Dashboard API, integration tests, and shared project versions
Source/Samples/DashBoard.Api/.../DashBoard.Api.csproj, Source/Samples/IntegrationTests/IntegrationTests.csproj, Source/Samples/SampleShared/SampleShared.csproj
Package versions for DotNetWorkQueue, transport, Dashboard, logging, and OpenTelemetry packages bumped.
LiteDb samples
Source/Samples/LiteDb/*/*.csproj
Transport, extensions, OpenTelemetry, and Dashboard.Client versions bumped across all LiteDb sample projects.
PostgreSQL samples
Source/Samples/PostgreSQL/*/*.csproj
Transport, extensions, OpenTelemetry, and Dashboard.Client versions bumped across all PostgreSQL sample projects.
Redis samples
Source/Samples/Redis/*/*.csproj
Transport, extensions, OpenTelemetry, StackExchange.Redis, and Dashboard.Client versions bumped across all Redis sample projects.
SQL Server samples
Source/Samples/SQLServer/*/*.csproj
Transport, extensions, OpenTelemetry, and Dashboard.Client versions bumped across all SQL Server sample projects.
SQLite samples
Source/Samples/SQLite/*/*.csproj
Transport, extensions, OpenTelemetry, and Dashboard.Client versions bumped across all SQLite sample projects.

AES encryption migration

Layer / File(s) Summary
AesMessageInterceptor registration
Source/Samples/SampleShared/Injectors.cs
AddMessageInterceptors now derives an AES key byte array and registers AesMessageInterceptor with AesMessageInterceptorConfiguration singleton instead of the removed TripleDesMessageInterceptor/TripleDesMessageInterceptorConfiguration, in both the encryption+gzip and encryption-only branches.

Estimated code review effort: 2 (Simple) | ~12 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Sample
  participant AddMessageInterceptors
  participant Container
  Sample->>AddMessageInterceptors: configure encryption + gzip options
  AddMessageInterceptors->>Container: register GZipMessageInterceptor (if gzip enabled)
  AddMessageInterceptors->>Container: register AesMessageInterceptor
  AddMessageInterceptors->>Container: register AesMessageInterceptorConfiguration singleton (32-byte key)
Loading

Related Issues: Closes #2 (Update samples to use AesMessageInterceptor after release)

Poem

Hop, hop, upgrade the code today,
TripleDES has hopped away!
AES keys locked up tight and neat,
New OpenTelemetry, oh so sweet,
Packages bumped from tail to snout —
This bunny's build has no doubt! 🐇🔐

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title captures the two main changes: DotNetWorkQueue upgrade and the AES interceptor migration.
Linked Issues check ✅ Passed The PR replaces TripleDES usage with AesMessageInterceptor/AesMessageInterceptorConfiguration and updates samples to 0.9.43 as required.
Out of Scope Changes check ✅ Passed The package bumps appear support-related and align with the stated dependency upgrade goals, with no clear unrelated changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sonarqubecloud

sonarqubecloud Bot commented Jul 7, 2026

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
Source/Samples/SampleShared/Injectors.cs (1)

72-81: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Hoist duplicated AesMessageInterceptorConfiguration construction.

new AesMessageInterceptorConfiguration(key) is built identically in both branches; since key is already computed once above the if, this can be created a single time and reused.

♻️ Proposed de-duplication
             byte[] key = System.Text.Encoding.ASCII.GetBytes("0123456789abcdef0123456789abcdef");
+            var aesConfiguration = new AesMessageInterceptorConfiguration(key);
 
             if (encryption && gzip)
             {
-                var aesConfiguration = new AesMessageInterceptorConfiguration(key);
                 container.RegisterCollection<IMessageInterceptor>(new[]
                 {
                     typeof (GZipMessageInterceptor), //gzip compression
                     typeof (AesMessageInterceptor) //encryption (AES-256-GCM)
                 });
                 container.Register(() => aesConfiguration, LifeStyles.Singleton);
             }
             else if (gzip)
             {
                 container.RegisterCollection<IMessageInterceptor>(new[]
                 {
                     typeof (GZipMessageInterceptor) //gzip compression
                 });
             }
             else if (encryption)
             {
-                var aesConfiguration = new AesMessageInterceptorConfiguration(key);
                 container.RegisterCollection<IMessageInterceptor>(new[]
                 {
                     typeof (AesMessageInterceptor) //encryption (AES-256-GCM)
                 });
                 container.Register(() => aesConfiguration,
                     LifeStyles.Singleton);
             }

Also applies to: 89-98

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Source/Samples/SampleShared/Injectors.cs` around lines 72 - 81, Hoist the
duplicated AesMessageInterceptorConfiguration construction out of the
conditional in Injectors setup so the same instance can be reused in both
branches. In the code around the encryption/gzip registration logic, create the
configuration once from the already computed key before the if/else and then
pass that shared value into the container.Register call(s) and interceptor
registration paths. This applies to both the combined
GZipMessageInterceptor/AesMessageInterceptor branch and the other branch that
also builds AesMessageInterceptorConfiguration.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@Source/Samples/SampleShared/Injectors.cs`:
- Around line 72-81: Hoist the duplicated AesMessageInterceptorConfiguration
construction out of the conditional in Injectors setup so the same instance can
be reused in both branches. In the code around the encryption/gzip registration
logic, create the configuration once from the already computed key before the
if/else and then pass that shared value into the container.Register call(s) and
interceptor registration paths. This applies to both the combined
GZipMessageInterceptor/AesMessageInterceptor branch and the other branch that
also builds AesMessageInterceptorConfiguration.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: eee407ff-925c-4d58-bc20-133387ffe88a

📥 Commits

Reviewing files that changed from the base of the PR and between a90e678 and ed4a3ce.

📒 Files selected for processing (44)
  • Source/Samples/DashBoard.Api/DashBoard.Api/DashBoard.Api.csproj
  • Source/Samples/IntegrationTests/IntegrationTests.csproj
  • Source/Samples/LiteDb/LiteDbConsumer/LiteDbConsumer.csproj
  • Source/Samples/LiteDb/LiteDbConsumerAsync/LiteDbConsumerAsync.csproj
  • Source/Samples/LiteDb/LiteDbConsumerLinq/LiteDbConsumerLinq.csproj
  • Source/Samples/LiteDb/LiteDbProducer/LiteDbProducer.csproj
  • Source/Samples/LiteDb/LiteDbProducerConsumer/LiteDbProducerConsumer.csproj
  • Source/Samples/LiteDb/LiteDbProducerLinq/LiteDbProducerLinq.csproj
  • Source/Samples/LiteDb/LiteDbScheduler/LiteDbScheduler.csproj
  • Source/Samples/LiteDb/LiteDbSchedulerConsumer/LiteDbSchedulerConsumer.csproj
  • Source/Samples/PostgreSQL/PostGreSQLConsumer/PostGreSQLConsumer.csproj
  • Source/Samples/PostgreSQL/PostGreSQLConsumerAsync/PostGreSQLConsumerAsync.csproj
  • Source/Samples/PostgreSQL/PostGreSQLConsumerLinq/PostGreSQLConsumerLinq.csproj
  • Source/Samples/PostgreSQL/PostGreSQLScheduler/PostGreSQLScheduler.csproj
  • Source/Samples/PostgreSQL/PostGreSQLSchedulerConsumer/PostGreSQLSchedulerConsumer.csproj
  • Source/Samples/PostgreSQL/PostgreSQLConsumerInbox/PostgreSQLConsumerInbox.csproj
  • Source/Samples/PostgreSQL/PostgreSQLProducer/PostgreSQLProducer.csproj
  • Source/Samples/PostgreSQL/PostgreSQLProducerLinq/PostgreSQLProducerLinq.csproj
  • Source/Samples/PostgreSQL/PostgreSQLProducerOutbox/PostgreSQLProducerOutbox.csproj
  • Source/Samples/Redis/RedisConsumer/RedisConsumer.csproj
  • Source/Samples/Redis/RedisConsumerAsync/RedisConsumerAsync.csproj
  • Source/Samples/Redis/RedisConsumerLinq/RedisConsumerLinq.csproj
  • Source/Samples/Redis/RedisProducer/RedisProducer.csproj
  • Source/Samples/Redis/RedisProducerLinq/RedisProducerLinq.csproj
  • Source/Samples/Redis/RedisScheduler/RedisScheduler.csproj
  • Source/Samples/Redis/RedisSchedulerConsumer/RedisSchedulerConsumer.csproj
  • Source/Samples/SQLServer/SQLServerConsumer/SQLServerConsumer.csproj
  • Source/Samples/SQLServer/SQLServerConsumerAsync/SQLServerConsumerAsync.csproj
  • Source/Samples/SQLServer/SQLServerConsumerInbox/SQLServerConsumerInbox.csproj
  • Source/Samples/SQLServer/SQLServerConsumerLinq/SQLServerConsumerLinq.csproj
  • Source/Samples/SQLServer/SQLServerProducer/SQLServerProducer.csproj
  • Source/Samples/SQLServer/SQLServerProducerLinq/SQLServerProducerLinq.csproj
  • Source/Samples/SQLServer/SQLServerProducerOutbox/SQLServerProducerOutbox.csproj
  • Source/Samples/SQLServer/SQLServerScheduler/SQLServerScheduler.csproj
  • Source/Samples/SQLServer/SQLServerSchedulerConsumer/SQLServerSchedulerConsumer.csproj
  • Source/Samples/SQLite/SQLiteConsumer/SQLiteConsumer.csproj
  • Source/Samples/SQLite/SQLiteConsumerAsync/SQLiteConsumerAsync.csproj
  • Source/Samples/SQLite/SQLiteConsumerLinq/SQLiteConsumerLinq.csproj
  • Source/Samples/SQLite/SQLiteProducer/SQLiteProducer.csproj
  • Source/Samples/SQLite/SQLiteProducerLinq/SQLiteProducerLinq.csproj
  • Source/Samples/SQLite/SQLiteSchedulerConsumer/SQLiteSchedulerConsumer.csproj
  • Source/Samples/SQLite/SQliteScheduler/SQliteScheduler.csproj
  • Source/Samples/SampleShared/Injectors.cs
  • Source/Samples/SampleShared/SampleShared.csproj

@blehnen blehnen merged commit b44f6af into main Jul 7, 2026
4 checks passed
@blehnen blehnen deleted the update-to-0.9.43-aes branch July 7, 2026 03:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update samples to use AesMessageInterceptor (after release)

1 participant