1

サービス バス キューを使用して、Web ロールとワーカー ロールの間で通信しています。Web ロール メッセージが worker ロールによって受け入れられないことがあります。しかし、私が送信する次のメッセージをすぐに受け入れます。バッチ操作が有効になっているため、おそらくそれが起こっていると思っていました。私はそれを偽にしようとしてきましたが、成功していません。これは私のコードです。

public static QueueClient GetServiceBusQueueClient(string queuename)
    {            
        string connectionString;

        if (RoleEnvironment.IsAvailable)
         connectionString = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString");
        else
            connectionString = ConfigurationManager.AppSettings["Microsoft.ServiceBus.ConnectionString"];          


        var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);

        QueueDescription queue = null;

        if (!namespaceManager.QueueExists(queuename))
        {
            queue = namespaceManager.CreateQueue(queuename);
            queue.EnableBatchedOperations = false;
            queue.MaxDeliveryCount = 1000;
        }
        else
        {
            queue = namespaceManager.GetQueue(queuename);
            queue.EnableBatchedOperations = false;
            queue.MaxDeliveryCount = 1000;
        }

        MessagingFactorySettings mfs = new MessagingFactorySettings();
        mfs.NetMessagingTransportSettings.BatchFlushInterval = TimeSpan.Zero;

        string issuer;
        string accessKey;
         if (RoleEnvironment.IsAvailable)
            issuer = RoleEnvironment.GetConfigurationSettingValue("AZURE_SERVICEBUS_ISSUER");
         else
             issuer = ConfigurationManager.AppSettings["AZURE_SERVICEBUS_ISSUER"];

        if (RoleEnvironment.IsAvailable)
            accessKey = RoleEnvironment.GetConfigurationSettingValue("AZURE_SERVICEBUS_ACCESS_KEY");
        else
            accessKey = ConfigurationManager.AppSettings["AZURE_SERVICEBUS_ACCESS_KEY"];

        mfs.TokenProvider = TokenProvider.CreateSharedSecretTokenProvider(issuer, accessKey);
        MessagingFactory messagingFactory = MessagingFactory.Create(namespaceManager.Address, mfs);

        QueueClient Client = messagingFactory.CreateQueueClient(queue.Path);            

        return Client;
    }

ただし、デフォルトでは、EnableBatchedOperations は常に true であり、MaxDeliveryCount は常に 10 です。

何が問題なのかわかる方教えてください

ありがとう

4

2 に答える 2