2010-10-14 18 views
7

In questo momento stiamo utilizzando MSMQ con la funzione di attivazione WCF, che ci consente di non tirare la coda per leggere i messaggi. Piace il messaggio push all'applicazione.Notifica sottoscrittore RabbitMQ in .NET

Come stiamo esaminando il porting da MSMQ a RabbitMQ passando per quello che ci serve dalla coda dei messaggi.

Non riesco a trovare nulla per quanto riguarda il supporto client RabbitMQ .net per la ricezione della notifica dei messaggi dalla coda sottoscritta?

C'è qualcosa in RabbitMQ con .net che può fare notifica push all'abbonato come MSMQ?

Oppure è necessario un servizio in esecuzione che verifica costantemente il messaggio?

risposta

12

In AMQP (e RabbitMQ), ci sono due modi per recuperare i messaggi: basic.get e basic.consume.

Basic.get è utilizzato per eseguire il polling del server per un messaggio. Se ne esiste uno, viene restituito al client. In caso contrario, viene restituito un get-empty (il metodo .NET restituisce null).

Basic.consume imposta l'utente per la coda. Il broker spinge i messaggi al consumatore non appena arrivano. Puoi derivare DefaultBasicConsumer, che ti dà il tuo consumatore personalizzato, oppure puoi usare lo Subscription Message Pattern, che ti dà un blocco nextDelivery().

Per ulteriori informazioni, consultare la guida API collegata sopra e lo .NET Client Userguide. Inoltre, un ottimo posto per porre domande su RabbitMQ è la mailing list di rabbitmq-discuss.

+0

puoi vedere una domanda correlata - http: //stackoverflow.com/questions/9151698? Grazie –

5

Penso che tu stia cercando qualcosa come EventingBasicConsumer. Vedi anche this question/answer

1

Questa è una funzione fornita da WAS (Windows Activation Service). In questo momento WAS ha adattatori di listener per net.pipe, net.msmq e net.tcp (e il suo servizio di condivisione delle porte). Suppongo che tu abbia bisogno di un adattatore per listener AMQP specifico.

Questo può aiutare http://msdn.microsoft.com/en-us/library/ms789006.aspx

1

Here è un ottimo esempio di Simon Dixon su un servizio di pubblicazione/sottoscrizione utilizzando RabbitMQ. L'editore (produttore) è un'app .NET e l'abbonato (consumatore) un'app Android.