Table of Contents

Priority Queue Generator

[GeneratePriorityQueue] creates a typed PriorityQueuePolicy<TItem, TPriority> factory from a priority selector method.

[GeneratePriorityQueue(typeof(FulfillmentPriorityWork), typeof(int), FactoryMethodName = "Create", QueueName = "fulfillment-priority")]
public static partial class FulfillmentPriorityQueue
{
    [PriorityQueuePrioritySelector]
    private static int GetPriority(FulfillmentPriorityWork work) => work.Expedited ? 10 : 1;
}

The generated factory is parameterless, so applications can register it directly in IServiceCollection and inject the resulting queue into hosted workers or application services.

Diagnostics:

  • PKPQ001: host type must be partial.
  • PKPQ002: exactly one priority selector is required.
  • PKPQ003: priority selector signature is invalid.