相关疑难解决方法(0)

Azure Service Bus客户端连接持久性

我有一个围绕Azure Service Bus代码的基本包装器,我们将在一个辅助角色中使用它.这ServiceBusClient将每个工人的角色运行时进行实例化; 然后用来访问队列,直到没有剩余的项目进行枚举.

public class ServiceBusClient : IDisposable, IServiceBusClient
{
    private const int DEFAULT_WAIT_TIME_IN_SECONDS = 120;

    private const string SERVICE_BUS_CONNECTION_STRING_KEY = "service.bus.connection.string";

    private readonly MessagingFactory _messagingFactory;

    private readonly NamespaceManager _namespaceManager;

    private readonly QueueClient _queueClient;

    private readonly ISettingsManager _settingsManager;

    public ServiceBusClient(ISettingsManager settingsManager, string queueName)
    {
        _settingsManager = settingsManager;

        var connectionString = _settingsManager.GetSetting<string>(SERVICE_BUS_CONNECTION_STRING_KEY);

        _namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
        _messagingFactory = MessagingFactory.CreateFromConnectionString(connectionString);

        _queueClient = GetOrCreateQueue(queueName);
    }

    public void Dispose()
    {
        _messagingFactory.Close();
    }

    public BrokeredMessage ReceiveTopMessage()
    {
        return _queueClient.Receive(TimeSpan.FromSeconds(DEFAULT_WAIT_TIME_IN_SECONDS));
    }

    public void SendMessage(object …
Run Code Online (Sandbox Code Playgroud)

c# client azure azureservicebus

11
推荐指数
1
解决办法
7712
查看次数

重用Azure Service Bus中的连接

我们在Windows Azure上以Web角色托管了一个API,其中有2个实例接收请求,验证它们然后将它们添加到Azure Service Bus队列.

最近我们开始加载测试,发现我们当前的代码抛出以下异常:

无法向命令队列添加命令异常:Microsoft.ServiceBus.Messaging.QuotaExceededException:已达到或超过队列的最大连接数.活动连接数:100,允许的最大连接数:100.

假设我们维护了一个类的实例,下面的客户端代码是否会保持单个连接打开?我试图确定问题是与ServiceBusClient代码或我们的依赖注册是否为每个请求初始化一个新客户端.

public class ServiceBusClient : IDisposable
{
    #region Constants and Fields

    protected readonly NamespaceManager NamespaceManager;

    private const int DEFAULT_LOCK_DURATION_IN_SECONDS = 300; // 5 minutes 

    private const string SERVICE_BUS_CONNECTION_STRING_KEY 
                            = "service.bus.connection.string";

    private readonly IMessageBodySerializer _messageBodySerializer;

    private readonly MessagingFactory _messagingFactory;

    private readonly QueueClient _queueClient;

    private readonly string _queueName;

    private readonly ISettingsManager _settingsManager;

    #endregion

    #region Constructors and Destructors

    public ServiceBusClient(
        ISettingsManager settingsManager, 
        IMessageBodySerializer messageBodySerializer, s
        tring queueName)
    {
        _settingsManager = settingsManager;
        _messageBodySerializer = messageBodySerializer;

        var connectionString = …
Run Code Online (Sandbox Code Playgroud)

c# azure azureservicebus

4
推荐指数
1
解决办法
3284
查看次数

标签 统计

azure ×2

azureservicebus ×2

c# ×2

client ×1