/// <summary> /// Initializes a new instance of the <see cref="AmqpConsumer"/> class. /// </summary> /// /// <param name="entityName">The name of the Service Bus entity from which events will be consumed.</param> /// <param name="prefetchCount">Controls the number of events received and queued locally without regard to whether an operation was requested. If <c>null</c> a default will be used.</param> /// <param name="receiveMode">The <see cref="ReceiveMode"/> used to specify how messages are received. Defaults to PeekLock mode.</param> /// <param name="connectionScope">The AMQP connection context for operations .</param> /// <param name="retryPolicy">The retry policy to consider when an operation fails.</param> /// <param name="sessionId"></param> /// <param name="isSessionReceiver"></param> /// /// <remarks> /// As an internal type, this class performs only basic sanity checks against its arguments. It /// is assumed that callers are trusted and have performed deep validation. /// /// Any parameters passed are assumed to be owned by this instance and safe to mutate or dispose; /// creation of clones or otherwise protecting the parameters is assumed to be the purview of the /// caller. /// </remarks> /// public AmqpConsumer( string entityName, ReceiveMode receiveMode, uint?prefetchCount, AmqpConnectionScope connectionScope, ServiceBusRetryPolicy retryPolicy, string sessionId, bool isSessionReceiver) { Argument.AssertNotNullOrEmpty(entityName, nameof(entityName)); Argument.AssertNotNull(connectionScope, nameof(connectionScope)); Argument.AssertNotNull(retryPolicy, nameof(retryPolicy)); EntityName = entityName; _connectionScope = connectionScope; _retryPolicy = retryPolicy; _isSessionReceiver = isSessionReceiver; _receiveMode = receiveMode; ReceiveLink = new FaultTolerantAmqpObject <ReceivingAmqpLink>( timeout => _connectionScope.OpenConsumerLinkAsync( timeout: timeout, prefetchCount: prefetchCount ?? DefaultPrefetchCount, receiveMode: receiveMode, sessionId: sessionId, isSessionReceiver: isSessionReceiver, cancellationToken: CancellationToken.None), link => { CloseLink(link); }); }
///// <summary> ///// The converter to use for translating between AMQP messages and client library ///// types. ///// </summary> //private AmqpMessageConverter MessageConverter { get; } ///// <summary> ///// The AMQP connection scope responsible for managing transport constructs for this instance. ///// </summary> ///// //internal AmqpConnectionScope ConnectionScope { get; } ///// <summary> ///// The AMQP link intended for use with receiving operations. ///// </summary> ///// //internal FaultTolerantAmqpObject<ReceivingAmqpLink> ReceiveLink { get; } /// <summary> /// Initializes a new instance of the <see cref="AmqpConsumer"/> class. /// </summary> /// /// <param name="entityName">The name of the Service Bus entity from which events will be consumed.</param> /// <param name="prefetchCount">Controls the number of events received and queued locally without regard to whether an operation was requested. If <c>null</c> a default will be used.</param> /// <param name="ownerLevel">The relative priority to associate with the link; for a non-exclusive link, this value should be <c>null</c>.</param> /// <param name="connectionScope">The AMQP connection context for operations .</param> /// <param name="retryPolicy">The retry policy to consider when an operation fails.</param> /// <param name="sessionId"></param> /// /// <remarks> /// As an internal type, this class performs only basic sanity checks against its arguments. It /// is assumed that callers are trusted and have performed deep validation. /// /// Any parameters passed are assumed to be owned by this instance and safe to mutate or dispose; /// creation of clones or otherwise protecting the parameters is assumed to be the purview of the /// caller. /// </remarks> /// public AmqpConsumer( string entityName, long?ownerLevel, uint?prefetchCount, AmqpConnectionScope connectionScope, ServiceBusRetryPolicy retryPolicy, string sessionId) { Argument.AssertNotNullOrEmpty(entityName, nameof(entityName)); Argument.AssertNotNull(connectionScope, nameof(connectionScope)); Argument.AssertNotNull(retryPolicy, nameof(retryPolicy)); EntityName = entityName; ConnectionScope = connectionScope; RetryPolicy = retryPolicy; ReceiveLink = new FaultTolerantAmqpObject <ReceivingAmqpLink>( timeout => ConnectionScope.OpenConsumerLinkAsync( //consumerGroup, //partitionId, timeout, prefetchCount ?? DefaultPrefetchCount, ownerLevel, sessionId, CancellationToken.None), link => { CloseLink(link); }); }