public void ServiceQueueShouldExistAfterConstructor() { string queuePath = @".\private$\testSvc"; using (MsmqMessageHubService testSvc = new MsmqMessageHubService(queuePath, new AppConnectedClientRepository <MsmqConnectedClient>())) { Assert.IsTrue(MessageQueue.Exists(queuePath)); } }
public void ClientShouldBeInRepoAfterAddReceiver() { var repo = new AppConnectedClientRepository <MsmqConnectedClient>(); MsmqConnectedClient subject = new MsmqConnectedClient { Id = Guid.NewGuid() }; using (MsmqMessageHubService testSvc = new MsmqMessageHubService(@".\private$\testSvc", repo)) { testSvc.AddReceiver(subject); MsmqConnectedClient actual = repo.Single(subject.Id); Assert.IsNotNull(actual); } repo.Remove(subject.Id); subject.Dispose(); }
static void Main(string[] args) { using (MsmqMessageHubService service = new MsmqMessageHubService(".\\private$\\AppHub", new AppConnectedClientRepository <MsmqConnectedClient>())) using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost")) { IRemoteMessageHub stateHub = MsmqMessageHub.Create().WithConfiguration(new MsmqHubConfiguration { RemoteQueuePath = ".\\private$\\AppHub" }); stateHub.Connect().Wait(); Guid stateHubChannelId = Guid.NewGuid(); stateHub.Channel("Users").AddReceiver("Add", (userData) => { return(Task.Factory.StartNew(async() => { RemoteUser user = userData as RemoteUser; if (user != null) { string serializedUser = JsonConvert.SerializeObject(user); IDatabase db = redis.GetDatabase(); if (await db.SetContainsAsync("AllUsers", serializedUser)) { await db.SetRemoveAsync("AllUsers", serializedUser); } await db.SetAddAsync("AllUsers", serializedUser); } })); }, stateHubChannelId); stateHub.Channel("Users").AddReceiver("Remove", (userData) => { return(Task.Factory.StartNew(async() => { RemoteUser user = userData as RemoteUser; if (user != null) { string serializedUser = JsonConvert.SerializeObject(user); IDatabase db = redis.GetDatabase(); if (await db.SetContainsAsync("AllUsers", serializedUser)) { await db.SetRemoveAsync("AllUsers", serializedUser); } } })); }, stateHubChannelId); stateHub.Channel("Content").AddReceiver("Update", (contentData) => { return(Task.Factory.StartNew(async() => { string content = contentData as string; IDatabase db = redis.GetDatabase(); await db.StringSetAsync("Content", content); })); }, stateHubChannelId); Console.ReadKey(); redis.GetDatabase().KeyDelete("AllUsers"); redis.GetDatabase().KeyDelete("Content"); stateHub.Channel("Users").RemoveReceiver("Add", stateHubChannelId); stateHub.Channel("Users").RemoveReceiver("Remove", stateHubChannelId); stateHub.Channel("Content").RemoveReceiver("Update", stateHubChannelId); stateHub.Disconnect(); } }