Teraz nasz kod publishing dla dużych ilości wiadomości wygląda tak:Czy można opublikować wiele wiadomości jednocześnie za pomocą klienta RabbitMQ dla C#?
foreach (var message in messages)
{
publisher.Publish(message);
}
Czy istnieje możliwość wysłania więcej niż jedną wiadomość za pośrednictwem kanału na raz?
publisher.Publish(messages);
lub jeśli więc kawałek
var chunks = messages.Chunk(100);
foreach (var chunk in chunks)
{
publisher.Publish(chunk);
}
Rozejrzałem się i nie sądzę, że RabbitMQ obsługuje dozowanie. Czy masz naprawdę duże opóźnienie między serwerem a klientem? –
@Asad tak, tak właśnie jest. Nie publikujemy często, ale kiedy to robimy, mamy około 500 tysięcy wiadomości do opublikowania. – yenta
Czy rzeczywiście wyprofilowałeś i zidentyfikowałeś to jako wąskie gardło w swoim systemie? Myślę, że najlepszą rzeczą byłoby opublikowanie tego, co teraz robisz, i pozwolić AMQP zająć się nim tak szybko, jak pozwala na to Twoja sieć i konsumenci. Jeśli naprawdę masz problemy z wydajnością, być może możliwe jest wysłanie niestandardowej wiadomości "chunked", tak jak to robisz powyżej, a następnie otrzymanie czegoś bliższego konsumentom, który ją otrzyma i opublikowanie wiadomości składowych. –