Code Monkey home page Code Monkey logo

msmqpatterns's Introduction

BusterWood.Msmq.Patterns

Nuget

Easy to use patterns for .NET and MSMQ built on BusterWood.Msmq. e.g. publish/subscribe messaging using message labels, request/reply pattern, sending with delivery notification.

Please see the wiki page for more details.

BusterWood.Msmq

A .NET library for MSMQ (Microsoft Message Queuing) with support for MSMQ 3.0+ features, i.e. subqueues and poison message handling for transactional queues.

Please read the wiki page for more details.

Why?

To create reliable patterns for MSMQ I needed transactional support for moving messages to subqueues, but this was not supported by System.Messaging.

msmqpatterns's People

Contributors

busterwood avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

sammyenigma

msmqpatterns's Issues

Remote pub/sub proxy

Often pub/sub systems are multicast between servers but point-to-point from clients to servers. Add a pattern for this.

Batching

Remote clients of a QueueDispatcherProxy (this needs a better name) would be more efficient if they subscribed and unsubscribed in batches.

Subscribers send a messages labelled "subscribe" with a message body containing the subscriptions, one per line in UTF8, with a reply address set.

Similar for unsubscription,

Queue.TryCreate should set quota

All queues should be created with a quota, with some sensible default, otherwise MSMQ service may grind to a halt, e.g. try putting 250,000 messages in a queue and rebooting.

Aggregate objects

Add support for subscribing to all or part of an aggregate object, e.g. Subscribe to orders, or subscribe to orders including order lines

AppSpecific guidance

Publish subscribe patterns need to know the version number of data, e.g. The Cache returns version N, is the latest published data newer information? We need to know if we get older/newer data, it makes sense to to AppSpecific for this, otherwise we will need to decode the message body

Combine LabelSubscription and caching

Subscribing should automatically send the last known value if a label is being cached.

Consider combining the cached messages so we can reply with one (or a small number) of messages when subscribing, e.g. use the message extension to store number and size of each message stored in the response body

Add a deduplication pattern

Duplicate messages are a common source of errors, create a pattern that removes duplicate messages when reading a queue. Consider using the hashing the message body and storing the last hash for each label.

Transactional router performance

Improve performance of the transactional router by sending messages on one thread and removing messages from the batch queue on another thread?

Naming

Rename QueueDispatcher to LabelSubscriber.

Rename QueueDispatcherProxy to LabelSubscriptionServer

Remember to update the wiki pages.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.