Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Service Bus] Improve errors and update API docs as per the feedback from UX study #11592

Merged
merged 3 commits into from
Apr 27, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,9 @@ public ServiceBusSender CreateSender(string queueOrTopicName, string viaQueueOrT

/// <summary>
/// Creates a <see cref="ServiceBusReceiver"/> instance that can be used for receiving and settling messages
/// from a specific queue.
/// from a specific queue. It uses <see cref="ReceiveMode"/> to specify how messages are received. Defaults to PeekLock mode.
/// If you want to change the <see cref="ReceiveMode"/>, use <see cref="CreateReceiver(string, ServiceBusReceiverOptions)"/> method.
/// The <see cref="ReceiveMode"/> is set in <see cref="ServiceBusReceiverOptions"/>.
/// </summary>
///
/// <param name="queueName">The queue to create a <see cref="ServiceBusReceiver"/> for.</param>
Expand All @@ -226,7 +228,8 @@ public ServiceBusReceiver CreateReceiver(string queueName)

/// <summary>
/// Creates a <see cref="ServiceBusReceiver"/> instance that can be used for receiving and settling messages
/// from a specific queue.
/// from a specific queue. It uses <see cref="ReceiveMode"/> to specify how messages are received. Defaults to PeekLock mode.
/// The <see cref="ReceiveMode"/> is set in <see cref="ServiceBusReceiverOptions"/>.
/// </summary>
///
/// <param name="queueName">The queue to create a <see cref="ServiceBusReceiver"/> for.</param>
Expand All @@ -249,7 +252,10 @@ public ServiceBusReceiver CreateReceiver(

/// <summary>
/// Creates a <see cref="ServiceBusReceiver"/> instance that can be used for receiving and
/// settling messages from a specific subscription.
/// settling messages from a specific subscription. It uses <see cref="ReceiveMode"/> to specify
/// how messages are received. Defaults to PeekLock mode. If you want to change the <see cref="ReceiveMode"/>,
/// use <see cref="CreateReceiver(string, string, ServiceBusReceiverOptions)"/> method.
/// The <see cref="ReceiveMode"/> is set in <see cref="ServiceBusReceiverOptions"/>.
/// </summary>
///
/// <param name="topicName">The topic to create a <see cref="ServiceBusReceiver"/> for.</param>
Expand All @@ -272,7 +278,8 @@ public ServiceBusReceiver CreateReceiver(

/// <summary>
/// Creates a <see cref="ServiceBusReceiver"/> instance that can be used for
/// receiving and settling messages from a specific subscription.
/// receiving and settling messages from a specific subscription. It uses <see cref="ReceiveMode"/> to specify
/// how messages are received. Defaults to PeekLock mode. The <see cref="ReceiveMode"/> is set in <see cref="ServiceBusReceiverOptions"/>.
/// </summary>
///
/// <param name="topicName">The topic to create a <see cref="ServiceBusReceiver"/> for.</param>
Expand All @@ -298,7 +305,8 @@ public ServiceBusReceiver CreateReceiver(

/// <summary>
/// Creates a <see cref="ServiceBusSessionReceiver"/> instance that can be used for receiving
/// and settling messages from a specific session-enabled queue.
/// and settling messages from a specific session-enabled queue. It uses <see cref="ReceiveMode"/> to specify
/// how messages are received. Defaults to PeekLock mode. The <see cref="ReceiveMode"/> is set in <see cref="ServiceBusReceiverOptions"/>.
/// </summary>
///
/// <param name="queueName">The session-enabled queue to create a <see cref="ServiceBusSessionReceiver"/> for.</param>
Expand Down Expand Up @@ -332,7 +340,8 @@ public virtual async Task<ServiceBusSessionReceiver> CreateSessionReceiverAsync(

/// <summary>
/// Creates a <see cref="ServiceBusSessionReceiver"/> instance that can be used for receiving
/// and settling messages from a specific session-enabled subscription.
/// and settling messages from a specific session-enabled subscription. It uses <see cref="ReceiveMode"/> to specify
/// how messages are received. Defaults to PeekLock mode. The <see cref="ReceiveMode"/> is set in <see cref="ServiceBusReceiverOptions"/>.
/// </summary>
///
/// <param name="topicName">The topic to create a <see cref="ServiceBusSessionReceiver"/> for.</param>
Expand Down Expand Up @@ -368,7 +377,8 @@ public virtual async Task<ServiceBusSessionReceiver> CreateSessionReceiverAsync(

/// <summary>
/// Creates a <see cref="ServiceBusReceiver"/> instance that can be used for receiving from the
/// dead letter queue for the specified queue.
/// dead letter queue for the specified queue. It uses <see cref="ReceiveMode"/> to specify
/// how messages are received. Defaults to PeekLock mode. The <see cref="ReceiveMode"/> is set in <see cref="ServiceBusReceiverOptions"/>.
/// </summary>
///
/// <param name="queueName">The queue to create a <see cref="ServiceBusReceiver"/> for.</param>
Expand All @@ -392,7 +402,8 @@ public ServiceBusReceiver CreateDeadLetterReceiver(

/// <summary>
/// Creates a <see cref="ServiceBusReceiver"/> instance that can be used for receiving from the
/// dead letter queue for the specified subscription.
/// dead letter queue for the specified subscription. It uses <see cref="ReceiveMode"/> to specify
/// how messages are received. Defaults to PeekLock mode. The <see cref="ReceiveMode"/> is set in <see cref="ServiceBusReceiverOptions"/>.
/// </summary>
///
/// <param name="topicName">The topic to create a <see cref="ServiceBusReceiver"/> for.</param>
Expand Down Expand Up @@ -421,7 +432,10 @@ public ServiceBusReceiver CreateDeadLetterReceiver(

/// <summary>
/// Creates a <see cref="ServiceBusProcessor"/> instance that can be used to process messages using
/// event handlers that are set on the processor.
/// event handlers that are set on the processor. It uses <see cref="ReceiveMode"/> to specify
/// how messages are received. Defaults to PeekLock mode. If you want to change the <see cref="ReceiveMode"/>,
/// use <see cref="CreateProcessor(string, ServiceBusProcessorOptions)"/> method.
/// The <see cref="ReceiveMode"/> is set in <see cref="ServiceBusProcessorOptions"/> type.
/// </summary>
///
/// <param name="queueName">The queue to create a <see cref="ServiceBusProcessor"/> for.</param>
Expand All @@ -440,7 +454,8 @@ public ServiceBusProcessor CreateProcessor(string queueName)

/// <summary>
/// Creates a <see cref="ServiceBusProcessor"/> instance that can be used to process messages using
/// event handlers that are set on the processor.
/// event handlers that are set on the processor. It uses <see cref="ReceiveMode"/> to specify
/// how messages are received. Defaults to PeekLock mode. The <see cref="ReceiveMode"/> is set in <see cref="ServiceBusProcessorOptions"/> type.
/// </summary>
///
/// <param name="queueName">The queue to create a <see cref="ServiceBusProcessor"/> for.</param>
Expand All @@ -463,7 +478,10 @@ public ServiceBusProcessor CreateProcessor(

/// <summary>
/// Creates a <see cref="ServiceBusProcessor"/> instance that can be used to process messages using
/// event handlers that are set on the processor.
/// event handlers that are set on the processor. It uses <see cref="ReceiveMode"/> to specify
/// how messages are received. Defaults to PeekLock mode. If you want to change the <see cref="ReceiveMode"/>,
/// use <see cref="CreateProcessor(string, string, ServiceBusProcessorOptions)"/> method.
/// The <see cref="ReceiveMode"/> is set in <see cref="ServiceBusProcessorOptions"/> type.
/// </summary>
///
/// <param name="topicName">The topic to create a <see cref="ServiceBusProcessor"/> for.</param>
Expand All @@ -485,7 +503,8 @@ public ServiceBusProcessor CreateProcessor(

/// <summary>
/// Creates a <see cref="ServiceBusProcessor"/> instance that can be used to process messages using
/// event handlers that are set on the processor.
/// event handlers that are set on the processor. It uses <see cref="ReceiveMode"/> to specify
/// how messages are received. Defaults to PeekLock mode. The <see cref="ReceiveMode"/> is set in <see cref="ServiceBusProcessorOptions"/> type.
/// </summary>
///
/// <param name="topicName">The topic to create a <see cref="ServiceBusProcessor"/> for.</param>
Expand All @@ -510,7 +529,8 @@ public ServiceBusProcessor CreateProcessor(

/// <summary>
/// Creates a <see cref="ServiceBusSessionProcessor"/> instance that can be used to process session messages using
/// event handlers that are set on the processor.
/// event handlers that are set on the processor. It uses <see cref="ReceiveMode"/> to specify
/// how messages are received. Defaults to PeekLock mode. The <see cref="ReceiveMode"/> is set in <see cref="ServiceBusProcessorOptions"/> type.
/// </summary>
///
/// <param name="queueName">The queue to create a <see cref="ServiceBusSessionProcessor"/> for.</param>
Expand All @@ -535,7 +555,8 @@ public ServiceBusSessionProcessor CreateSessionProcessor(

/// <summary>
/// Creates a <see cref="ServiceBusSessionProcessor"/> instance that can be used to process
/// messages using event handlers that are set on the processor.
/// messages using event handlers that are set on the processor. It uses <see cref="ReceiveMode"/> to specify
/// how messages are received. Defaults to PeekLock mode. The <see cref="ReceiveMode"/> is set in <see cref="ServiceBusProcessorOptions"/> type.
/// </summary>
///
/// <param name="topicName">The topic to create a <see cref="ServiceBusSessionProcessor"/> for.</param>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,75 +1,44 @@
#pragma warning disable SA1636 // File header copyright text should match
// Copyright (c) Microsoft Corporation. All rights reserved.
#pragma warning restore SA1636 // File header copyright text should match
// Licensed under the MIT License.
// /// <summary>
// /// Registers a <see cref="ServiceBusSenderClient"/> instance with the provided <paramref name="connectionString"/> and <paramref name="eventHubName"/>
// /// </summary>
// ///
// public static IAzureClientBuilder<ServiceBusSenderClient, ServiceBusSenderClientOptions> AddEventHubProducerClient<TBuilder>(this TBuilder builder, string connectionString, string eventHubName)
// where TBuilder : IAzureClientFactoryBuilder
// {
// return builder.RegisterClientFactory<ServiceBusSenderClient, ServiceBusSenderClientOptions>(options => new ServiceBusSenderClient(connectionString, eventHubName, options));
// }

// /// <summary>
// /// Registers a <see cref="ServiceBusSenderClient"/> instance with the provided <paramref name="fullyQualifiedNamespace"/> and <paramref name="eventHubName"/>
// /// </summary>
// ///
// public static IAzureClientBuilder<ServiceBusSenderClient, ServiceBusSenderClientOptions> AddEventHubProducerClientWithNamespace<TBuilder>(this TBuilder builder, string fullyQualifiedNamespace, string eventHubName)
// where TBuilder : IAzureClientFactoryBuilderWithCredential
// {
// return builder.RegisterClientFactory<ServiceBusSenderClient, ServiceBusSenderClientOptions>((options, token) => new ServiceBusSenderClient(fullyQualifiedNamespace, eventHubName, token, options));
// }
using Azure.Core.Extensions;
using Azure.Messaging.ServiceBus;

// /// <summary>
// /// Registers a <see cref="ServiceBusSenderClient"/> instance with connection options loaded from the provided <paramref name="configuration"/> instance.
// /// </summary>
// ///
// public static IAzureClientBuilder<ServiceBusSenderClient, ServiceBusSenderClientOptions> AddEventHubProducerClient<TBuilder, TConfiguration>(this TBuilder builder, TConfiguration configuration)
// where TBuilder : IAzureClientFactoryBuilderWithConfiguration<TConfiguration>
// {
// return builder.RegisterClientFactory<ServiceBusSenderClient, ServiceBusSenderClientOptions>(configuration);
// }
namespace Microsoft.Extensions.Azure
{
/// <summary>
/// The set of extensions to add the Service Bus client types to the clients builder
/// </summary>
public static class ServiceBusClientBuilderExtensions
{
/// <summary>
/// Registers a <see cref="ServiceBusClient "/> instance with the provided <paramref name="connectionString"/>.
/// </summary>
///
public static IAzureClientBuilder<ServiceBusClient, ServiceBusClientOptions> AddServiceBusClient<TBuilder>(this TBuilder builder, string connectionString)
where TBuilder : IAzureClientFactoryBuilder
{
return builder.RegisterClientFactory<ServiceBusClient, ServiceBusClientOptions>(options => new ServiceBusClient(connectionString, options));
}

// /// <summary>
// /// Registers a <see cref="ServiceBusReceiverClientOptions"/> instance with the provided <paramref name="connectionString"/>
// /// </summary>
// ///
// public static IAzureClientBuilder<ServiceBusReceiverClient, ServiceBusReceiverClientOptions> AddEventHubConsumerClient<TBuilder>(this TBuilder builder, string consumerGroup, string connectionString)
// where TBuilder : IAzureClientFactoryBuilder
// {
// return builder.RegisterClientFactory<ServiceBusReceiverClient, ServiceBusReceiverClientOptions>(options => new ServiceBusReceiverClient(consumerGroup, connectionString, options));
// }
/// <summary>
/// Registers a <see cref="ServiceBusClient"/> instance with the provided <paramref name="fullyQualifiedNamespace"/>.
/// </summary>
///
public static IAzureClientBuilder<ServiceBusClient, ServiceBusClientOptions> AddServiceBusClientWithNamespace<TBuilder>(this TBuilder builder, string fullyQualifiedNamespace)
where TBuilder : IAzureClientFactoryBuilderWithCredential
{
return builder.RegisterClientFactory<ServiceBusClient, ServiceBusClientOptions>((options, token) => new ServiceBusClient(fullyQualifiedNamespace, token, options));
}

// /// <summary>
// /// Registers a <see cref="ServiceBusReceiverClient"/> instance with the provided <paramref name="connectionString"/> and <paramref name="eventHubName"/>
// /// </summary>
// ///
// public static IAzureClientBuilder<ServiceBusReceiverClient, ServiceBusReceiverClientOptions> AddEventHubConsumerClient<TBuilder>(this TBuilder builder, string consumerGroup, string connectionString, string eventHubName)
// where TBuilder : IAzureClientFactoryBuilder
// {
// return builder.RegisterClientFactory<ServiceBusReceiverClient, ServiceBusReceiverClientOptions>(options => new ServiceBusReceiverClient(connectionString, eventHubName, options));
// }

// /// <summary>
// /// Registers a <see cref="ServiceBusReceiverClient"/> instance with the provided <paramref name="fullyQualifiedNamespace"/> and <paramref name="eventHubName"/>
// /// </summary>
// ///
// public static IAzureClientBuilder<ServiceBusReceiverClient, ServiceBusReceiverClientOptions> AddEventHubConsumerClientWithNamespace<TBuilder>(this TBuilder builder, string consumerGroup, string fullyQualifiedNamespace, string eventHubName)
// where TBuilder : IAzureClientFactoryBuilderWithCredential
// {
// return builder.RegisterClientFactory<ServiceBusReceiverClient, ServiceBusReceiverClientOptions>((options, token) => new ServiceBusReceiverClient(fullyQualifiedNamespace, eventHubName, token, options));
// }

// /// <summary>
// /// Registers a <see cref="ServiceBusReceiverClient"/> instance with connection options loaded from the provided <paramref name="configuration"/> instance.
// /// </summary>
// ///
// public static IAzureClientBuilder<ServiceBusReceiverClient, ServiceBusReceiverClientOptions> AddEventHubConsumerClient<TBuilder, TConfiguration>(this TBuilder builder, TConfiguration configuration)
// where TBuilder : IAzureClientFactoryBuilderWithConfiguration<TConfiguration>
// {
// return builder.RegisterClientFactory<ServiceBusReceiverClient, ServiceBusReceiverClientOptions>(configuration);
// }
// }
//}
/// <summary>
/// Registers a <see cref="ServiceBusClient"/> instance with connection options loaded from the provided <paramref name="configuration"/> instance.
/// </summary>
///
public static IAzureClientBuilder<ServiceBusClient, ServiceBusClientOptions> AddServiceBusClient<TBuilder, TConfiguration>(this TBuilder builder, TConfiguration configuration)
where TBuilder : IAzureClientFactoryBuilderWithConfiguration<TConfiguration>
{
return builder.RegisterClientFactory<ServiceBusClient, ServiceBusClientOptions>(configuration);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
namespace Azure.Messaging.ServiceBus
{
/// <summary>
/// A <see cref="ServiceBusProcessor"/> is responsible for processing <see cref="ServiceBusReceivedMessage" /> from a specific
/// entity using event handlers. It is constructed by calling
/// <see cref="ServiceBusClient.CreateProcessor(string, ServiceBusProcessorOptions)"/>.
/// The <see cref="ServiceBusProcessor"/> provides an abstraction around a set of <see cref="ServiceBusReceiver"/> that
/// allows using an event based model for processing received <see cref="ServiceBusReceivedMessage" />. It is constructed by calling
/// <see cref="ServiceBusClient.CreateProcessor(string, ServiceBusProcessorOptions)"/>.
/// The event handler is specified with the <see cref="ProcessMessageAsync"/>
/// property. The error handler is specified with the <see cref="ProcessErrorAsync"/> property.
/// To start processing after the handlers have been specified, call <see cref="StartProcessingAsync"/>.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,9 @@
namespace Azure.Messaging.ServiceBus
{
/// <summary>
/// A <see cref="ServiceBusSessionProcessor"/> is responsible for processing
/// <see cref="ServiceBusReceivedMessage" /> from a specific entity using event handlers.
/// It is constructed by calling
/// <see cref="ServiceBusClient.CreateSessionProcessor(string, ServiceBusProcessorOptions, string)"/>.
/// The <see cref="ServiceBusSessionProcessor"/> provides an abstraction around a set of <see cref="ServiceBusSessionReceiver"/> that
/// allows using an event based model for processing received <see cref="ServiceBusReceivedMessage" />.
/// It is constructed by calling <see cref="ServiceBusClient.CreateSessionProcessor(string, ServiceBusProcessorOptions, string)"/>.
/// The event handler is specified with the <see cref="ProcessMessageAsync"/>
/// property. The error handler is specified with the <see cref="ProcessErrorAsync"/> property.
/// To start processing after the handlers have been specified, call <see cref="StartProcessingAsync"/>.
Expand Down
Loading