コード例 #1
0
        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);
        }
コード例 #2
0
        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();
        }