public async Task SingleGrainTest() { Message[] messages = null; var grain = PubSubGrainFactory.GetGrain(0, ""); await grain.Subscribe(await MessageObserverFactory.CreateObjectReference(new MessageObserver(x => messages = x))); await grain.Publish(new Message[] { new Message("x", "y", "Hello World") }); Thread.Sleep(50); Assert.IsNotNull(messages); Assert.AreEqual(1, messages.Length); Assert.AreEqual("x", messages[0].Source); Assert.AreEqual("y", messages[0].Key); }
public OrleansMessageBus(IDependencyResolver resolver, ScaleoutConfiguration configuration) : base(resolver, configuration) { grain = PubSubGrainFactory.GetGrain(Guid.NewGuid()); subscriber = new MessageObserver((messages) => { lock (grain) { OnReceived(messages[0].StreamIndex, messages.Select(x => x.MappingId).Max(), new ScaleoutMessage(messages)); } }); subscriberReference = MessageObserverFactory.CreateObjectReference(subscriber).Result; grain.Subscribe(subscriberReference).Wait(); }