Skip to content

Fix conventionally-routed endpoints ignoring durable outbox policy#2309

Merged
jeremydmiller merged 1 commit intomainfrom
fix/2304-outbox-cascading-messages
Mar 16, 2026
Merged

Fix conventionally-routed endpoints ignoring durable outbox policy#2309
jeremydmiller merged 1 commit intomainfrom
fix/2304-outbox-cascading-messages

Conversation

@jeremydmiller
Copy link
Copy Markdown
Member

Summary

  • Fixes Outgoing messages are not persisted in the transactional outbox #2304UseDurableOutboxOnAllSendingEndpoints() was not applied to endpoints discovered through conventional routing (e.g., UseConventionalRouting())
  • Root cause: MessageRoutingConvention.DiscoverSenders() never added a Subscription to the endpoint, so the AllSenders policy (which gates on Subscriptions.Any()) skipped it during Endpoint.Compile()
  • Fix: register a Subscription.ForType(messageType) on the endpoint before it gets compiled, so endpoint policies correctly recognize it as a sender

Test plan

  • Added Bug_2304_conventional_routing_ignores_durable_outbox_policy test in Wolverine.RabbitMQ.Tests that verifies conventionally-routed endpoints get EndpointMode.Durable when UseDurableOutboxOnAllSendingEndpoints() is configured
  • Verified the test fails without the fix (endpoint mode was Inline)
  • All 23 existing conventional routing tests pass
  • All 19 RabbitMQ bug regression tests pass
  • Core routing tests pass

🤖 Generated with Claude Code

…dingEndpoints

Conventionally-routed sender endpoints were not getting durable outbox
mode applied because they had no Subscriptions when Endpoint.Compile()
ran endpoint policies. The AllSenders policy skips endpoints without
subscriptions, so UseDurableOutboxOnAllSendingEndpoints() never applied.

Fixes #2304

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.

Outgoing messages are not persisted in the transactional outbox

1 participant