Если то, что вам действительно нужно, - это решение, которое позволяет вам иметь только одно сообщение, в котором вы можете поместить определенный фильтр в сообщение на основе clientId и направить сообщение клиенту только тогда, когда оно относится к ним, тогда я бы использовалPServiceBus ( pservicebus.codeplex.com ).Это облегчит вам конкретный набор подписок для каждого вашего клиента, где их сообщения все фильтруются по clientId в определенную очередь или какой транспорт у вас есть.В приведенном ниже примере показана фильтрация ChatTopic по свойству UserName, и подписчик получает сообщение только на указанном транспорте, если сообщение было опубликовано, свойство UserName не является TJ.Вам также разрешено использовать сложный фильтр, когда вы делаете что-то, например, GreaterThan ("MyComplexProperty.Blah.ID", 5)
Subscriber.New("MyUserName").Durable(false)
.SubscribeTo(Topic.Select<ChatTopic>().NotEqual("UserName", "TJ"))
.AddTransport("Tcp",
Transport.New<TcpTransport>(
transport => {
transport.Format = TransportFormat.Json;
transport.IPAddress = "127.0.0.1";
transport.Port = port;
}), "ChatTopic")
.Save();