2009-09-08 19 views
5

Czy jest możliwe, aby kilku klientów słuchało na jednej instancji MSMQ i korzystało z interfejsu Selektywnego Konsumenta, aby każdy z nich miał oddzielny podzbiór wiadomości? Nie wydaje mi się, aby ten scenariusz działał poprawnie przy użyciu pub/sub - pojedynczy konsument w kolejce działa dobrze, ale przy użyciu> 1 konsumentów (kilka wystąpień tego samego pliku wykonywalnego) żadne wiadomości nie pojawiają się w ogóle. Jak rozumiem, nie dotyczy to "konkurujących konsumentów", ponieważ tylko jeden konsument przetworzy pojedynczą wiadomość.Wielu klientów dla pojedynczej kolejki w MassTransit

Każda pomoc lub wskazówki są mile widziane.

Odpowiedz

2

Jeśli używasz MassTransit do wysyłania wiadomości z kolejki MSMQ, zaleca się, aby kolejka była lokalna w skrzynce.

Jeśli masz wiele procesów odczytywanych z tej samej kolejki w celu dystrybucji obciążenia komunikatem, możesz użyć selektywnego odbioru tylko do odbierania komunikatów w każdej instancji związanej z tym procesem.

Na przykład, jeśli masz wiele wystąpień aplikacji, które wysyłają wiadomości do usługi i ta usługa odpowiada za pomocą skorelowanego komunikatu, możesz subskrybować skorelowany komunikat za pomocą identyfikatora i zostaną dostarczone tylko te subskrybowane wiadomości. Wiadomości, które nie zostaną wybrane, pozostaną w kolejce do czasu przetworzenia przez dowolny z procesów, które są zainteresowane.

Z tego powodu zaleca się ustawienie daty wygaśnięcia wiadomości, tak aby zignorowane odpowiedzi nie zatykały kolejki w czasie.

Ten scenariusz jest dość powszechny podczas replikowania wzorca żądania/odpowiedzi za pośrednictwem wiadomości.

Powiązane problemy