public OrleansPubSub(IGrainFactory grainFactory) { Guard.NotNull(grainFactory, nameof(grainFactory)); this.grainFactory = grainFactory; pubSubGrain = grainFactory.GetGrain <IPubSubGrain>(SingleGrain.Id); }
public Task Unregister(IPubSubGrain grainSubscriber) { if (!this.subscribers.Contains(grainSubscriber)) { this.subscribers.Remove(grainSubscriber); } var y = subscribers.ToArray(); return Task.WhenAll(this.subscribers.Select(x => x.TopologyChange(y)).ToArray()); }
public Task Unregister(IPubSubGrain grainSubscriber) { if (!this.subscribers.Contains(grainSubscriber)) { this.subscribers.Remove(grainSubscriber); } var y = subscribers.ToArray(); return(Task.WhenAll(this.subscribers.Select(x => x.TopologyChange(y)).ToArray())); }
public async Task<IPubSubGrain[]> Register(IPubSubGrain grainSubscriber) { if (!this.subscribers.Contains(grainSubscriber)) { this.subscribers.Add(grainSubscriber); } var y = subscribers.ToArray(); await Task.WhenAll(this.subscribers.Where(x => x != grainSubscriber).Select(x => x.TopologyChange(y)).ToArray()); return y; }
public async Task <IPubSubGrain[]> Register(IPubSubGrain grainSubscriber) { if (!this.subscribers.Contains(grainSubscriber)) { this.subscribers.Add(grainSubscriber); } var y = subscribers.ToArray(); await Task.WhenAll(this.subscribers.Where(x => x != grainSubscriber).Select(x => x.TopologyChange(y)).ToArray()); return(y); }
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(); }
public Task TopologyChange(IPubSubGrain[] otherGrains) { this.otherGrains = otherGrains; return TaskDone.Done; }
public override Task OnActivateAsync() { pubSub = GrainFactory.GetGrain <IPubSubGrain>("pubsub-" + this.GetGrainIdentity().PrimaryKeyString); pubSub.SetPublishingGrain(typeof(IContentPersistentGrain), this.GetGrainIdentity().PrimaryKeyString); return(base.OnActivateAsync()); }