私はプログラムでmsmqバインディングとスロットルを設定しましたが、MaxConcurrentCalls、MaxConcurrentSessions、MaxConcurrentInstancesを10以上に設定しても、一度に10個以上のメッセージを処理できません。ここでWCF MSMQを取得して一度に10個以上のメッセージを取得するにはどうすればよいですか?
はホストを作成するためのコードです:ここでは
var host = new ServiceHost(typeof(MqProcessRequestServer));
var binding = new NetMsmqBinding(NetMsmqSecurityMode.None)
{
UseSourceJournal = true,
ReceiveErrorHandling = ReceiveErrorHandling.Drop,
ReceiveRetryCount = 0,
MaxRetryCycles = 0,
RetryCycleDelay = TimeSpan.FromMinutes(1),
ExactlyOnce = true,
Durable = true,
MaxReceivedMessageSize = 4000000000,
ReceiveTimeout = TimeSpan.FromSeconds(30)
};
var queueUri = string.Format("net.msmq://localhost/private/{0}", scriptEngineVersion);
host.AddServiceEndpoint(typeof(IMqProcessRequest), binding, queueUri);
// Set throttling to ScriptEngine.Capacity in datamodel
var throttling = new ServiceThrottlingBehavior
{
MaxConcurrentCalls = capacity,
MaxConcurrentSessions = capacity,
MaxConcurrentInstances = capacity
};
host.Description.Behaviors.Add(throttling);
// Set service timeout
var behavior = host.Description.Behaviors.Find<ServiceBehaviorAttribute>();
behavior.TransactionTimeout = TimeSpan.FromSeconds(60).ToString();
は、サービスの動作です:
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerCall, ReleaseServiceInstanceOnTransactionComplete = false)]
public class MqProcessRequestServer : IMqProcessRequest, IDisposable
私は、すべての少ないし、10点の作品罰金、容量が異なる値を試してみました最大で設定されていますが、10を超える数字は10にすぎません。