Skip to content

Conversation

@SzymonPobiega
Copy link
Member

  • Adds option to use Outbox feature with SendsAtomicWithReceive transaction mode (enabled via a settings value)
  • Adds option to intercept the communication between TransportReceiveToBlaBlaConnector and the IOutbosStorage by introducing IOutboxSeam. This change is needed to implement outbox scenarios that diverge from the default one.

Remove whitespace

Tweaks

Use simple namespace

Fix inspections

Try FIFO mode for the AT transport to ensure strict message processing order

Fix whitespace

Add ControlMessage header

Use context.Extensions in SetAsDispatchedBehavior

Split OutboxSeam into two dedicated classes

Minimal version

Remove test changes
@danielmarbach
Copy link
Contributor

How would a downstream implement this? Are you saying you plan to add some features to a downstream that then modifies the pipeline execution?

@danielmarbach
Copy link
Contributor

I have been thinking about this a bit more today, and I believe that before adopting an approach like this, we need to consider whether it provides any real-world value. As far as I understand, one of the main IO costs in the outbox implementation is storing the transport operations. We would still need to do that. The only real gain would be the ability to delete the deduplication entry, but that also implies that no one should ever send the same message with the same ID again.

We might currently rely on the presence of a deduplication entry for a certain period to support ideas around transactional sessions by using a stable ID for business operations. That capability would be lost if the dedup entry is removed too early.

Additionally, while this would reduce storage requirements by no longer persisting a GUID, it introduces an extra control message. For each outgoing message, this means that on a standard Azure Service Bus tier, we would be charged two operations instead of one, adding another tradeoff. I think it would be useful to compare these tradeoffs to determine whether the change actually provides a tangible advantage.

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.

3 participants