/// <summary> /// Instantiates a new <see cref="TopicClient"/> to perform operations on a topic. /// </summary> /// <param name="connectionStringBuilder"><see cref="ServiceBusConnectionStringBuilder"/> having namespace and topic information.</param> /// <param name="retryPolicy">Retry policy for topic operations. Defaults to <see cref="RetryPolicy.Default"/></param> /// <remarks>Creates a new connection to the topic, which is opened during the first send operation.</remarks> public TopicClient(ServiceBusConnectionStringBuilder connectionStringBuilder, RetryPolicy retryPolicy = null) : this(connectionStringBuilder?.GetNamespaceConnectionString(), connectionStringBuilder?.EntityPath, retryPolicy) { }
internal ServiceBusConnection(RetryPolicy retryPolicy = null) { this.RetryPolicy = retryPolicy ?? RetryPolicy.Default; this.syncLock = new object(); }
public ServiceBusConnection(string namespaceConnectionString, TimeSpan operationTimeout, RetryPolicy retryPolicy = null) : this(retryPolicy) { if (string.IsNullOrWhiteSpace(namespaceConnectionString)) { throw Fx.Exception.ArgumentNullOrWhiteSpace(nameof(namespaceConnectionString)); } var serviceBusConnectionStringBuilder = new ServiceBusConnectionStringBuilder(namespaceConnectionString); if (!string.IsNullOrWhiteSpace(serviceBusConnectionStringBuilder.EntityPath)) { throw Fx.Exception.Argument(nameof(namespaceConnectionString), "NamespaceConnectionString should not contain EntityPath."); } this.InitializeConnection(serviceBusConnectionStringBuilder); // operationTimeout argument explicitly provided by caller should take precedence over OperationTimeout found in the connection string. this.OperationTimeout = operationTimeout; }
/// <summary> /// Instantiates a new <see cref="QueueClient"/> to perform operations on a queue. /// </summary> /// <param name="connectionString">Namespace connection string. <remarks>Should not contain queue information.</remarks></param> /// <param name="entityPath">Path to the queue</param> /// <param name="receiveMode">Mode of receive of messages. Defaults to <see cref="ReceiveMode"/>.PeekLock.</param> /// <param name="retryPolicy">Retry policy for queue operations. Defaults to <see cref="RetryPolicy.Default"/></param> public QueueClient(string connectionString, string entityPath, ReceiveMode receiveMode = ReceiveMode.PeekLock, RetryPolicy retryPolicy = null) : this(new ServiceBusNamespaceConnection(connectionString), entityPath, receiveMode, retryPolicy ?? RetryPolicy.Default) { if (string.IsNullOrWhiteSpace(connectionString)) { throw Fx.Exception.ArgumentNullOrWhiteSpace(connectionString); } if (string.IsNullOrWhiteSpace(entityPath)) { throw Fx.Exception.ArgumentNullOrWhiteSpace(entityPath); } this.ownsConnection = true; }
QueueClient(ServiceBusNamespaceConnection serviceBusConnection, string entityPath, ReceiveMode receiveMode, RetryPolicy retryPolicy) : base($"{nameof(QueueClient)}{ClientEntity.GetNextId()}({entityPath})", retryPolicy) { this.syncLock = new object(); this.QueueName = entityPath; this.ReceiveMode = receiveMode; this.ServiceBusConnection = serviceBusConnection; this.TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider( serviceBusConnection.SasKeyName, serviceBusConnection.SasKey); this.CbsTokenProvider = new TokenProviderAdapter(this.TokenProvider, serviceBusConnection.OperationTimeout); }
QueueClient(ServiceBusNamespaceConnection serviceBusConnection, string entityPath, ReceiveMode receiveMode, RetryPolicy retryPolicy) : base(nameof(QueueClient), entityPath, retryPolicy) { MessagingEventSource.Log.QueueClientCreateStart(serviceBusConnection?.Endpoint.Authority, entityPath, receiveMode.ToString()); this.ServiceBusConnection = serviceBusConnection ?? throw new ArgumentNullException(nameof(serviceBusConnection)); this.OperationTimeout = this.ServiceBusConnection.OperationTimeout; this.syncLock = new object(); this.QueueName = entityPath; this.ReceiveMode = receiveMode; MessagingEventSource.Log.QueueClientCreateStop(serviceBusConnection.Endpoint.Authority, entityPath, this.ClientId); }
/// <summary> /// Instantiates a new <see cref="QueueClient"/> to perform operations on a queue. /// </summary> /// <param name="connectionStringBuilder"><see cref="ServiceBusConnectionStringBuilder"/> having namespace and queue information.</param> /// <param name="receiveMode">Mode of receive of messages. Defaults to <see cref="ReceiveMode"/>.PeekLock.</param> /// <param name="retryPolicy">Retry policy for queue operations. Defaults to <see cref="RetryPolicy.Default"/></param> public QueueClient(ServiceBusConnectionStringBuilder connectionStringBuilder, ReceiveMode receiveMode = ReceiveMode.PeekLock, RetryPolicy retryPolicy = null) : this(connectionStringBuilder.GetNamespaceConnectionString(), connectionStringBuilder.EntityPath, receiveMode, retryPolicy) { }
QueueClient(ServiceBusNamespaceConnection serviceBusConnection, string entityPath, ReceiveMode receiveMode, RetryPolicy retryPolicy) : base(ClientEntity.GenerateClientId(nameof(QueueClient), entityPath), retryPolicy) { MessagingEventSource.Log.QueueClientCreateStart(serviceBusConnection?.Endpoint.Authority, entityPath, receiveMode.ToString()); this.ServiceBusConnection = serviceBusConnection ?? throw new ArgumentNullException(nameof(serviceBusConnection)); this.OperationTimeout = this.ServiceBusConnection.OperationTimeout; this.syncLock = new object(); this.QueueName = entityPath; this.ReceiveMode = receiveMode; this.TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider( serviceBusConnection.SasKeyName, serviceBusConnection.SasKey); this.CbsTokenProvider = new TokenProviderAdapter(this.TokenProvider, serviceBusConnection.OperationTimeout); MessagingEventSource.Log.QueueClientCreateStop(serviceBusConnection.Endpoint.Authority, entityPath, this.ClientId); }
/// <summary> /// Instantiates a new <see cref="SubscriptionClient"/> to perform operations on a subscription. /// </summary> /// <param name="connectionString">Namespace connection string. Must not contain topic or subscription information.</param> /// <param name="topicPath">Path to the topic.</param> /// <param name="subscriptionName">Name of the subscription.</param> /// <param name="receiveMode">Mode of receive of messages. Defaults to <see cref="ReceiveMode"/>.PeekLock.</param> /// <param name="retryPolicy">Retry policy for subscription operations. Defaults to <see cref="RetryPolicy.Default"/></param> /// <remarks>Creates a new connection to the subscription, which is opened during the first receive operation.</remarks> public SubscriptionClient(string connectionString, string topicPath, string subscriptionName, ReceiveMode receiveMode = ReceiveMode.PeekLock, RetryPolicy retryPolicy = null) : this(new ServiceBusNamespaceConnection(connectionString), topicPath, subscriptionName, receiveMode, retryPolicy ?? RetryPolicy.Default) { if (string.IsNullOrWhiteSpace(connectionString)) { throw Fx.Exception.ArgumentNullOrWhiteSpace(connectionString); } if (string.IsNullOrWhiteSpace(topicPath)) { throw Fx.Exception.ArgumentNullOrWhiteSpace(topicPath); } if (string.IsNullOrWhiteSpace(subscriptionName)) { throw Fx.Exception.ArgumentNullOrWhiteSpace(subscriptionName); } this.ownsConnection = true; }
/// <summary> /// Instantiates a new <see cref="SubscriptionClient"/> to perform operations on a subscription. /// </summary> /// <param name="connectionStringBuilder"><see cref="ServiceBusConnectionStringBuilder"/> having namespace and topic information.</param> /// <param name="subscriptionName">Name of the subscription.</param> /// <param name="receiveMode">Mode of receive of messages. Defaults to <see cref="ReceiveMode"/>.PeekLock.</param> /// <param name="retryPolicy">Retry policy for subscription operations. Defaults to <see cref="RetryPolicy.Default"/></param> /// <remarks>Creates a new connection to the subscription, which is opened during the first receive operation.</remarks> public SubscriptionClient(ServiceBusConnectionStringBuilder connectionStringBuilder, string subscriptionName, ReceiveMode receiveMode = ReceiveMode.PeekLock, RetryPolicy retryPolicy = null) : this(connectionStringBuilder?.GetNamespaceConnectionString(), connectionStringBuilder?.EntityPath, subscriptionName, receiveMode, retryPolicy) { }
SubscriptionClient(ServiceBusNamespaceConnection serviceBusConnection, string topicPath, string subscriptionName, ReceiveMode receiveMode, RetryPolicy retryPolicy) : base(ClientEntity.GenerateClientId(nameof(SubscriptionClient), $"{topicPath}/{subscriptionName}"), retryPolicy) { MessagingEventSource.Log.SubscriptionClientCreateStart(serviceBusConnection?.Endpoint.Authority, topicPath, subscriptionName, receiveMode.ToString()); this.ServiceBusConnection = serviceBusConnection ?? throw new ArgumentNullException(nameof(serviceBusConnection)); this.OperationTimeout = this.ServiceBusConnection.OperationTimeout; this.syncLock = new object(); this.TopicPath = topicPath; this.SubscriptionName = subscriptionName; this.Path = EntityNameHelper.FormatSubscriptionPath(this.TopicPath, this.SubscriptionName); this.ReceiveMode = receiveMode; this.TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider( serviceBusConnection.SasKeyName, serviceBusConnection.SasKey); this.CbsTokenProvider = new TokenProviderAdapter(this.TokenProvider, serviceBusConnection.OperationTimeout); MessagingEventSource.Log.SubscriptionClientCreateStop(serviceBusConnection.Endpoint.Authority, topicPath, subscriptionName, this.ClientId); }
/// <summary> /// Creates a new instance of the Topic client on a given <see cref="ServiceBusConnection"/> /// </summary> /// <param name="serviceBusConnection">Connection object to the service bus namespace.</param> /// <param name="entityPath">Topic path.</param> /// <param name="retryPolicy">Retry policy for topic operations. Defaults to <see cref="RetryPolicy.Default"/></param> public TopicClient(ServiceBusConnection serviceBusConnection, string entityPath, RetryPolicy retryPolicy) : base(nameof(TopicClient), entityPath, retryPolicy) { MessagingEventSource.Log.TopicClientCreateStart(serviceBusConnection?.Endpoint.Authority, entityPath); if (string.IsNullOrWhiteSpace(entityPath)) { throw Fx.Exception.ArgumentNullOrWhiteSpace(entityPath); } this.ServiceBusConnection = serviceBusConnection ?? throw new ArgumentNullException(nameof(serviceBusConnection)); this.syncLock = new object(); this.TopicName = entityPath; this.OwnsConnection = false; this.ServiceBusConnection.ThrowIfClosed(); if (this.ServiceBusConnection.TokenProvider != null) { this.CbsTokenProvider = new TokenProviderAdapter(this.ServiceBusConnection.TokenProvider, this.ServiceBusConnection.OperationTimeout); } else { throw new ArgumentNullException($"{nameof(ServiceBusConnection)} doesn't have a valid token provider"); } MessagingEventSource.Log.TopicClientCreateStop(serviceBusConnection.Endpoint.Authority, entityPath, this.ClientId); }