Skip to content

07 PLAN

Brian Lehnen edited this page Apr 8, 2026 · 1 revision

phase: 03-transports plan: "7" wave: 2 dependencies: ["1"] must_haves:

  • MemoryTransport.md consumer code uses ILogger pattern
  • MemoryTransport.md links to ConsumerMethod (not ConsumerLinq)
  • MemoryTransport.md clarifies NuGet package (built into DotNetWorkQueue core)
  • MemoryTransport.md documents EnableHistory as the only configurable option files_touched:
  • MemoryTransport.md tdd: false

Plan 7 -- Memory Transport

Wave 2 -- Transport pages. Depends on Plan 1 (Transports overview). Can run in parallel with Plans 2-6.


Task 1: Update MemoryTransport.md with NuGet clarification, complete options, and cross-references

Update `MemoryTransport.md` with these changes:
  1. NuGet package clarification (line 21): The current page says "included in the core DotNetWorkQueue NuGet package. No separate transport package needed." This is correct. However, add the actual init class reference for consistency with other transport pages. Update the line to:

    The init class is `MemoryMessageQueueInit`, included in the core `DotNetWorkQueue` NuGet package. No separate transport NuGet package is needed.
  2. Consumer HandleMessages method (lines 57-60): The current code already uses notifications.Log.LogDebug(...) which is the correct MEL ILogger pattern. Verify this is retained.

  3. Feature list correction (lines 6-7): The current page says "Delayed messages" and "Job scheduler" as supported features. However, per the source code, the Memory transport has EnableDelayedProcessing = false (always). Remove "Delayed messages" from the supported features, or clarify that delayed processing is not natively supported but the job scheduler can still be used. Check the delayed messages section (lines 63-69) -- if the code sample works via AdditionalMessageData.SetDelay(), keep it but note it may not be honored by the transport.

    Actually, re-checking: the Delayed messages section on lines 63-69 shows data.SetDelay(TimeSpan.FromMinutes(5)). Since Memory transport has EnableDelayedProcessing = false permanently, this delay would be ignored. Remove the "Delayed messages" section and the delayed messages code sample. Update the feature list to:

    It supports the following features:
    
    - History tracking (opt-in, the only configurable feature)
    - Job scheduler
    
    Queues don't need to be created before usage; storage is allocated on demand.
  4. EnableHistory documentation: Add a new section after the limitations:

    ###### Options
    
    The Memory transport has only one configurable option:
    
    | Property | Type | Default | Notes |
    |----------|------|---------|-------|
    | `EnableHistory` | `bool` | `false` | The only settable feature flag |
    
    All other features (`EnablePriority`, `EnableStatus`, `EnableHeartBeat`, `EnableDelayedProcessing`, `EnableStatusTable`, `EnableRoute`, `EnableMessageExpiration`) are permanently `false`.
    
    When `EnableHistory` is `true`, the `HistoryOptions` property (type `HistoryTransportOptions`) controls retention. See [MessageHistory](https://github.com/blehnen/DotNetWorkQueue/wiki/MessageHistory) for the full list of history options.
  5. Cross-references: Add after the consumer code sample (before the delayed messages section which will be removed):

    For more consumer patterns, see [ConsumerMethod](https://github.com/blehnen/DotNetWorkQueue/wiki/ConsumerMethod) and [ConsumerAsync](https://github.com/blehnen/DotNetWorkQueue/wiki/ConsumerAsync).
  6. No samples link: The DotNetWorkQueue.Samples repository does not have a Memory transport sample directory. Do not add a samples link.

Do NOT change: Producer code, Dashboard support section, or the limitation list (these are correct).

grep -i "DotNetWorkQueue.Logging.LogLevel|Log.Log(|ConsumerLinq|SetDelay" /mnt/f/git/dotnetworkqueue.wiki/MemoryTransport.md; echo "exit: $?" grep returns no matches (exit code 1). MemoryTransport.md has correct ILogger pattern, documents EnableHistory as the only configurable option, links to ConsumerMethod and MessageHistory, and does not have the misleading delayed messages section.

Clone this wiki locally