Additional Channel Decorators #16

Open
joliver opened this Issue Mar 29, 2012 · 4 comments

Projects

None yet

1 participant

@joliver
Owner
joliver commented Mar 29, 2012

Actual message infrastructure channel, e.g. RabbitChannel
NullMessageChannel (to notify consumer when a timeout occurs and no message is received)
IdempotentChannel (channel itself must be multi-threaded and prevent duplicates)

  • this channel should also prevent duplicates from occurring when a message is received and during normal processing
  • AND remove the identifier when the channel fails to process a message
  • AND finally "commit" to the in memory ring buffer once the transaction completes
    DeserializerChannel (does all message-related de-serialization)
    DeadLetterChannel (counts number of consumers and ensures that unroutable messages received are considered dead and forwarded, also any expired messages are handled by this channel)
    DependencyResolverChannel
    PooledDispatchChannel
    AuditChannel
@joliver
Owner
joliver commented Apr 15, 2012

WireChannel
NullDeliveryHandler
IdempotentDeliveryHandler
DeadLetterDeliveryHandler
SerializationDeliveryHandler
PoisonMessageDeliveryHandler (handles exceptions?)
DependencyResolverDeliveryHandler
PooledDispatchDeliveryHandler (this is only for outbound, so it really isn't a delivery handler)
AuditDeliveryHandler
[AutofacDeliveryHandler]
RoutingTableDeliveryHandler (combine DefaultDeliveryHandler and DefaultChannelMessageHandler)

Now messages are routed to appropriate message handlers...

@joliver
Owner
joliver commented Apr 15, 2012

Also, we need a UnitOfWorkDeliveryHandler (just before the DependecyResolverDeliveryHandler) to ensure that a ChannelTransaction exists and is completed/committed at the end of the associated work. Lastly, we could also add a TransactionScopeDeliveryHandler into the pipeline just after the UnitOfWorkDeliveryHandler (and even register complete with the transaction...

@joliver
Owner
joliver commented Apr 15, 2012

We also want something that logs any exceptions that occur--perhaps the PoisonMessageDeliveryHandler which logs the full exception and then determines whether or not the message is poison...

@joliver joliver referenced this issue Apr 18, 2012
Closed

IDeliveryHandler #17

@joliver
Owner
joliver commented May 29, 2012

The IdempotentChannel not only needs to watch for unique values coming in while it's currently processing, but also keep track for a while thereafter, up to X message IDs. Finally, if the message is deferred, it should no longer track the ID of the message.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment