يتسبب عميل SQS في استثناءات مأخذ التوصيل تحت الحمل العالي في نواة الشبكة.
يجب أن يكون Sqsclient قادرًا على إدارة عمر عميل http مع التطبيقات.
أعاد استخدام عملاء http ولا يستهلك كل المنافذ. 8124
مصنع Clientconfig httpclient فارغ. لذلك لا يمكن التخلص من عملاء httpclients. يتم زيادة ذاكرة التخزين المؤقت إلى الحد الأقصى.
public class SqsHttpClientFactory : Amazon.Runtime.HttpClientFactory
{
private readonly IHttpClientFactory _httpClientFactory;
public SqsHttpClientFactory(IHttpClientFactory httpClientFactory)
{
_httpClientFactory = httpClientFactory;
}
public override HttpClient CreateHttpClient(IClientConfig clientConfig)
{
return _httpClientFactory.CreateClient();
}
}
services.AddAWSService<IAmazonSQS>();
services.AddSingleton<IAmazonSQS>(x => new AmazonSQSClient(new AmazonSQSConfig
{
HttpClientFactory = new SqsHttpClientFactory(x.GetRequiredService<IHttpClientFactory>())
}));
إنشاء مجموعة ECS Fargate. قم بتشغيل مهمة حيث تقوم الحاوية بتشغيل تطبيق أساسي .net على نظام التشغيل Linux.
تتعارض الخدمات مع الأحمال العالية. لا يدعم اتفاقيات مستوى الخدمة المحددة لـ sqs.
هل أنت متأكد من أن http أفضل بروتوكول للمراسلة؟
ما الذي قمت بتعيينه في تكوين العميل حول هذا الموضوع؟ هل CacheHttpClient صحيح؟
نعم أنا أستخدم. net core. أعتقد أن المشكلة قد تكون في الاستهداف. (باستخدام .net standart 1.3 وليس عميل http 2.0)
فئة الملخص العامة HttpClientFactory
{
///
/// إنشاء وتكوين HttpClient.
///
///
الملخص العام HttpClient CreateHttpClient (IClientConfig clientConfig) ؛
/// <summary>
/// <para>
/// This is a switch used for performance testing and is not intended for production applications
/// to change. This switch may be removed in a future version of the SDK as the .NET Core platform matures.
/// </para>
/// <para>
/// If true, the HttpClient is cached and reused for every request made by the service client
/// and shared with other service clients.
/// </para>
/// <para>
/// For the .NET Core platform this is default to true because the HttpClient manages the connection
/// pool.
/// </para>
/// </summary>
bool CacheHttpClient { get; }
أواجه هذه المسألة أيضا. هل هناك طريقة مقترحة لاستخدام SQSClient دون استهلاك جميع الاتصالات؟
لقد تحدثت مع دعم aws من خلال شركتي ، ولن يحلوها ، قبل الميلاد ، هناك حل بديل لذلك.
ما ذكرته أعلاه. SqsHttpClientFactory مع httpclientfactory الأساسية asp.net
الايجابيات: حل المشكلة
سلبيات: حظر العميل غير المتزامن (إذا كنت تريد الاستهلاك والإنتاج) لذلك يمكن أن يكون كل ما هو مصدر الحدث
https://github.com/aws/aws-sdk-net/issues/565
دليل التنفيذ:
https://www.stevejgordon.co.uk/httpclient-connection-pooling-in-dotnet-core
نفس القضايا:
https://github.com/aws/aws-sdk-net/issues/1339
https://github.com/aws/aws-sdk-net/issues/971
التعليق الأكثر فائدة
لقد تحدثت مع دعم aws من خلال شركتي ، ولن يحلوها ، قبل الميلاد ، هناك حل بديل لذلك.
ما ذكرته أعلاه. SqsHttpClientFactory مع httpclientfactory الأساسية asp.net
الايجابيات: حل المشكلة
سلبيات: حظر العميل غير المتزامن (إذا كنت تريد الاستهلاك والإنتاج) لذلك يمكن أن يكون كل ما هو مصدر الحدث
https://github.com/aws/aws-sdk-net/issues/565
دليل التنفيذ:
https://www.stevejgordon.co.uk/httpclient-connection-pooling-in-dotnet-core
نفس القضايا:
https://github.com/aws/aws-sdk-net/issues/1339
https://github.com/aws/aws-sdk-net/issues/971