2015-02-11 3 views
7

Gerade jetzt, unser Veröffentlichungscode für große Mengen von Nachrichten sieht so aus:Ist es möglich, mehrere Nachrichten gleichzeitig mit dem RabbitMQ-Client für C# zu veröffentlichen?

foreach (var message in messages) 
{ 
    publisher.Publish(message); 
} 

Existiert sofort die Möglichkeit, mehr als eine Nachricht über den Kanal zu senden?

publisher.Publish(messages); 

oder so, wenn wir chunk

var chunks = messages.Chunk(100); 
foreach (var chunk in chunks) 
{ 
    publisher.Publish(chunk); 
} 
+0

Ich habe mich umgesehen, und ich denke nicht, dass RabbitMQ Batching unterstützt. Haben Sie eine wirklich hohe Latenz zwischen Ihrem Server und Ihrem Client? –

+0

@Asad Ja, das ist genau der Fall. Wir veröffentlichen nicht oft, aber wenn wir es tun, haben wir etwa 500.000 Nachrichten zu veröffentlichen. – yenta

+0

Haben Sie dieses Profil tatsächlich als Engpass in Ihrem System profiliert und identifiziert? Ich denke, das Beste hier wäre, einfach so zu veröffentlichen, wie Sie es jetzt tun, und AMQP kümmert sich darum, so schnell es Ihr Netzwerk und Ihre Kunden erlauben. Wenn Sie wirklich Leistungsprobleme haben, ist es vielleicht möglich, eine benutzerdefinierte "Chunked" -Nachricht zu versenden, wie Sie es oben tun, dann haben Sie etwas näher bei den Verbrauchern, um es zu empfangen und die konstituierenden Nachrichten zu veröffentlichen. –

Antwort

0

Für RabbitMQ das AMQP-Protokoll für Produkte asynchron ist und verbrauchen Operationen, so dass es nicht klar ist, wie aus Batch-Consumerendpunkt aus dem Kasten heraus gegeben profitieren.

Sie können Endpunkte für Chunked-Nachrichten erstellen und sie im Workflow verarbeiten, wenn Sie die Vorgänge beschleunigen können. Eine Lösung wäre beispielsweise, eine Stapelkomponente vor der Publisher-Klasse aufzunehmen und benutzerdefinierte Nachrichten zu senden.

+0

Würden Sie wissen, wie Sie Batches in Warteschlangen spalten können? –

Verwandte Themen