public Task <ITriggerBinding> TryCreateAsync(TriggerBindingProviderContext context) { if (context == null) { throw new ArgumentNullException("context"); } ParameterInfo parameter = context.Parameter; EventHubTriggerAttribute attribute = parameter.GetCustomAttribute <EventHubTriggerAttribute>(inherit: false); if (attribute == null) { return(Task.FromResult <ITriggerBinding>(null)); } string eventHubName = attribute.EventHubName; string resolvedName = _nameResolver.ResolveWholeString(eventHubName); var eventHostListener = _eventHubConfig.GetEventProcessorHost(resolvedName); var options = _eventHubConfig.GetOptions(); var hooks = new EventHubTriggerBindingStrategy(); Func <ListenerFactoryContext, bool, Task <IListener> > createListener = (factoryContext, singleDispatch) => { IListener listener = new EventHubListener(factoryContext.Executor, eventHostListener, options, singleDispatch); return(Task.FromResult(listener)); }; ITriggerBinding binding = BindingFactory.GetTriggerBinding <EventData, EventHubTriggerInput>(hooks, parameter, _converterManager, createListener); return(Task.FromResult <ITriggerBinding>(binding)); }
public Task <ITriggerBinding> TryCreateAsync(TriggerBindingProviderContext context) { if (context == null) { throw new ArgumentNullException("context"); } ParameterInfo parameter = context.Parameter; EventHubTriggerAttribute attribute = parameter.GetCustomAttribute <EventHubTriggerAttribute>(inherit: false); if (attribute == null) { return(Task.FromResult <ITriggerBinding>(null)); } string resolvedEventHubName = _nameResolver.ResolveWholeString(attribute.EventHubName); string consumerGroup = attribute.ConsumerGroup ?? EventHubConsumerGroup.DefaultGroupName; string resolvedConsumerGroup = _nameResolver.ResolveWholeString(consumerGroup); if (!string.IsNullOrWhiteSpace(attribute.Connection)) { _eventHubConfig.AddReceiver(resolvedEventHubName, _nameResolver.Resolve(attribute.Connection)); } var eventHostListener = _eventHubConfig.GetEventProcessorHost(resolvedEventHubName, resolvedConsumerGroup); var options = _eventHubConfig.GetOptions(); Func <ListenerFactoryContext, bool, Task <IListener> > createListener = (factoryContext, singleDispatch) => { IListener listener = new EventHubListener(factoryContext.Executor, eventHostListener, options, singleDispatch); return(Task.FromResult(listener)); }; ITriggerBinding binding = BindingFactory.GetTriggerBinding(new EventHubTriggerBindingStrategy(), parameter, _converterManager, createListener); return(Task.FromResult <ITriggerBinding>(binding)); }
public override Collection<Attribute> GetAttributes() { Collection<Attribute> attributes = new Collection<Attribute>(); string eventHubName = Context.GetMetadataValue<string>("path"); if (!string.IsNullOrEmpty(eventHubName)) { eventHubName = _nameResolver.ResolveWholeString(eventHubName); } string connectionString = Context.GetMetadataValue<string>("connection"); if (!string.IsNullOrEmpty(connectionString)) { connectionString = _nameResolver.Resolve(connectionString); } if (Context.IsTrigger) { var attribute = new EventHubTriggerAttribute(eventHubName); string consumerGroup = Context.GetMetadataValue<string>("consumerGroup"); if (consumerGroup != null) { consumerGroup = _nameResolver.ResolveWholeString(consumerGroup); attribute.ConsumerGroup = consumerGroup; } attributes.Add(attribute); _eventHubConfiguration.AddReceiver(eventHubName, connectionString); } else { attributes.Add(new EventHubAttribute(eventHubName)); _eventHubConfiguration.AddSender(eventHubName, connectionString); } return attributes; }