我正在为我们的 Web 角色集群使用 Azure 的角色内缓存。
我需要使用单独dataCacheClients
的以便有不同的和明确设置传输属性配置(maxBufferPoolSize
和maxBufferSize
)。
问题是每个dataCacheClient
总是设置相同的maxBufferPoolSize
和maxBufferSize
值。它们都设置为dataCacheFactory
我首先实例化的值。
<dataCacheClients>
<dataCacheClient name="DataCache1">
<autoDiscover isEnabled="true" identifier="MyRoleName" />
<transportProperties maxBufferPoolSize="6400000" maxBufferSize="256" />
</dataCacheClient>
<dataCacheClient name="DataCache2">
<autoDiscover isEnabled="true" identifier="MyRoleName" />
<transportProperties maxBufferPoolSize="0" maxBufferSize="10485760" />
</dataCacheClient>
<dataCacheClient name="DataCache3">
<autoDiscover isEnabled="true" identifier="MyRoleName" />
<transportProperties maxBufferPoolSize="3276800" maxBufferSize="32768" />
</dataCacheClient>
</dataCacheClients>
每个具体DataCache
对象都是从单独的DataCacheFactory
实例(包含在静态“管理器”中)实例化的。我也尝试过恢复以编程方式创建缓存客户端,但无济于事。
因此,这是由于 MaxBufferSize 在 256 时太小而引发的异常。
调试工厂的时候,可以清楚的看到MaxBufferSize不是256:
我开始拔头发,所以我想出了两个想法:
我怀疑每个数据客户端的StartPort
and在所有数据中都是相同的(22233 as和 24233 as ),这让我相信他们可能来自同一个工厂(因此使用相同的设置)。DiscoveryPort
AutoDiscoveryProperties
StartPort
DiscoveryPort
此外,DataCacheServerEndpoint
每个客户的 20004 也是相同的。也许他们需要不同?
我正在使用 Microsoft.WindowsAzure.Caching 2.4.0.0 和 Azure SDK 2.4。
谁能帮我指出正确的方向?