[rabbitmq-discuss] Subscription Pattern in .net

Emile Joubert emile at rabbitmq.com
Tue Mar 15 13:08:48 GMT 2011


Hi Steven,

Thanks for your message about the Subscription class in the .net client.


On 12/03/11 08:06, Steven Taylor wrote:
> Hi,
> I like the Consumer pattern, but I wanted a timed version of it.  FYI:
> the Consumer pattern is basically a message enumerator/iterator that you
> can use in a foreach statement.  i.e. when a message turns up, you get
> another pass through the loop during which your code can decide what to
> do with the message.  Consumer lives in the
> RabbitMQ.Client.MessagePatterns namespace.
> For me, Foreach is neat approach as It hides uneccessesary detail.

IEnumerator.MoveNext() currently waits an indefinite amount of time 
until a message arrives. If I understand correctly, you want a version 
of with a timeout, supplied in the constructor.

Would the enumeration need to be restartable? You may need a different 
implementation of Reset() in that case and this substantially changes 
the semantics of Subscription. I'm not sure how well this fits with 
IEnumerator. Your use-case appears to be reading messages until a large 
gap appears between message. At first glance that looks insufficiently 
general to justify changing the IEnumerator implementation.

The Next(TimeOut,out Msg) method was intended to meet your needs if you 
want a timeout. The example you provided using this looks fine.

> So what is the policy on updating the Mercurial repository?

You could also fork our github repository here:
https://github.com/rabbitmq/rabbitmq-dotnet-client
This would be a way of building consensus for your proposal.

Code that you contribute that does get accepted in the main mercurial 
repository will need a signed contributor agreement.


Regards

Emile


More information about the rabbitmq-discuss mailing list