مشغل ناقل خدمة Azure لوظائف Azure
استخدم مشغل ناقل الخدمة للرد على الرسائل من قائمة انتظار أو موضوع ناقل الخدمة. بدءًا من إصدار الامتداد 3.1.0، يمكنك تشغيل قائمة انتظار أو موضوع تم تمكينه للجلسة.
للحصول على معلومات حول تفاصيل الإعداد والتكوين، راجع الاستعراض العام.
يتم اتخاذ قرارات تحجيم ناقل خدمة Microsoft Azure لخطط Consumption وPremium استنادا إلى التحجيم المستند إلى الهدف. لمزيد من المعلومات، راجع التحجيم المستند إلى الهدف.
هام
تستخدم هذه المقالة علامات التبويب لدعم إصدارات متعددة من نموذج البرمجة Node.js. يتوفر نموذج v4 بشكل عام وتم تصميمه للحصول على تجربة أكثر مرونة وبديهية لمطوري JavaScript وTypeScript. لمزيد من التفاصيل حول كيفية عمل نموذج v4، راجع دليل مطور Azure Functions Node.js. لمعرفة المزيد حول الاختلافات بين v3 وv4، راجع دليل الترحيل.
تدعم Azure Functions نموذجي برمجة ل Python. تعتمد الطريقة التي تحدد بها روابطك على نموذج البرمجة الذي اخترته.
يتيح لك نموذج برمجة Python v2 تحديد الروابط باستخدام المحسنات مباشرة في التعليمات البرمجية لدالة Python. لمزيد من المعلومات، راجع دليل مطور Python.
تدعم هذه المقالة كلا نموذجي البرمجة.
مثال
يمكن إنشاء دالة C# باستخدام أحد أوضاع C# التالية:
- نموذج العامل المعزول: دالة C# المترجمة التي يتم تشغيلها في عملية عامل معزولة عن وقت التشغيل. عملية العامل المعزولة مطلوبة لدعم وظائف C# التي تعمل على إصدارات LTS وغير LTS .NET و.NET Framework. تستخدم
Microsoft.Azure.Functions.Worker.Extensions.*
ملحقات دالات عملية العامل المعزولة مساحات الأسماء. - نموذج قيد المعالجة: دالة C# المحولة برمجيا التي تعمل في نفس العملية مثل وقت تشغيل الوظائف. في تباين هذا النموذج، يمكن تشغيل الدالات باستخدام البرمجة النصية C#، والتي يتم دعمها بشكل أساسي لتحرير مدخل C#. تستخدم
Microsoft.Azure.WebJobs.Extensions.*
ملحقات الوظائف قيد المعالجة مساحات الأسماء.
هام
سينتهي الدعم للنموذج قيد التنفيذ في 10 نوفمبر 2026. نوصي بشدة بترحيل تطبيقاتك إلى نموذج العامل المعزول للحصول على الدعم الكامل.
تحدد هذه التعليمة البرمجية وتهيئ ILogger
:
private readonly ILogger<ServiceBusReceivedMessageFunctions> _logger;
public ServiceBusReceivedMessageFunctions(ILogger<ServiceBusReceivedMessageFunctions> logger)
{
_logger = logger;
}
يظهر هذا المثال دالة C# التي تتلقى رسالة قائمة انتظار ناقل خدمة Microsoft Azure واحدة وتكتبها في السجلات:
[Function(nameof(ServiceBusReceivedMessageFunction))]
[ServiceBusOutput("outputQueue", Connection = "ServiceBusConnection")]
public string ServiceBusReceivedMessageFunction(
[ServiceBusTrigger("queue", Connection = "ServiceBusConnection")] ServiceBusReceivedMessage message)
{
_logger.LogInformation("Message ID: {id}", message.MessageId);
_logger.LogInformation("Message Body: {body}", message.Body);
_logger.LogInformation("Message Content-Type: {contentType}", message.ContentType);
var outputMessage = $"Output message created at {DateTime.Now}";
return outputMessage;
}
يوضح هذا المثال دالة C# التي تتلقى رسائل قائمة انتظار ناقل خدمة Microsoft Azure متعددة في دفعة واحدة وتكتب كل منها في السجلات:
[Function(nameof(ServiceBusReceivedMessageBatchFunction))]
public void ServiceBusReceivedMessageBatchFunction(
[ServiceBusTrigger("queue", Connection = "ServiceBusConnection", IsBatched = true)] ServiceBusReceivedMessage[] messages)
{
foreach (ServiceBusReceivedMessage message in messages)
{
_logger.LogInformation("Message ID: {id}", message.MessageId);
_logger.LogInformation("Message Body: {body}", message.Body);
_logger.LogInformation("Message Content-Type: {contentType}", message.ContentType);
}
}
يظهر هذا المثال دالة C# التي تتلقى رسائل قائمة انتظار ناقل خدمة Microsoft Azure المتعددة، وتكتبها في السجلات، ثم تحسم الرسالة كما هو مكتمل:
[Function(nameof(ServiceBusMessageActionsFunction))]
public async Task ServiceBusMessageActionsFunction(
[ServiceBusTrigger("queue", Connection = "ServiceBusConnection", AutoCompleteMessages = false)]
ServiceBusReceivedMessage message,
ServiceBusMessageActions messageActions)
{
_logger.LogInformation("Message ID: {id}", message.MessageId);
_logger.LogInformation("Message Body: {body}", message.Body);
_logger.LogInformation("Message Content-Type: {contentType}", message.ContentType);
// Complete the message
await messageActions.CompleteMessageAsync(message);
}
تستخدم الدالة Java التالية @ServiceBusQueueTrigger
التعليق التوضيحي من مكتبة وقت تشغيل وظائف Java لوصف التكوين الخاص بتشغيل قائمة انتظار ناقل الخدمة. تلتقط الوظيفة الرسالة الموضوعة في قائمة الانتظار وتضيفها إلى السجلات.
@FunctionName("sbprocessor")
public void serviceBusProcess(
@ServiceBusQueueTrigger(name = "msg",
queueName = "myqueuename",
connection = "myconnvarname") String message,
final ExecutionContext context
) {
context.getLogger().info(message);
}
يمكن أيضًا تشغيل وظائف Java عند إضافة رسالة إلى موضوع ناقل الخدمة. يستخدم المثال التالي التعليق التوضيحي @ServiceBusTopicTrigger
لوصف التكوين لربط بيانات الناتج.
@FunctionName("sbtopicprocessor")
public void run(
@ServiceBusTopicTrigger(
name = "message",
topicName = "mytopicname",
subscriptionName = "mysubscription",
connection = "ServiceBusConnection"
) String message,
final ExecutionContext context
) {
context.getLogger().info(message);
}
يوضح المثال التالي دالة TypeScript لمشغل ناقل خدمة Microsoft Azure. تقرأ الدالة بيانات تعريف الرسالةوتسجل رسالة قائمة انتظار ناقل الخدمة.
import { app, InvocationContext } from '@azure/functions';
export async function serviceBusQueueTrigger1(message: unknown, context: InvocationContext): Promise<void> {
context.log('Service bus queue function processed message:', message);
context.log('EnqueuedTimeUtc =', context.triggerMetadata.enqueuedTimeUtc);
context.log('DeliveryCount =', context.triggerMetadata.deliveryCount);
context.log('MessageId =', context.triggerMetadata.messageId);
}
app.serviceBusQueue('serviceBusQueueTrigger1', {
connection: 'MyServiceBusConnection',
queueName: 'testqueue',
handler: serviceBusQueueTrigger1,
});
يوضح المثال التالي دالة JavaScript لمشغل ناقل خدمة Microsoft Azure. تقرأ الدالة بيانات تعريف الرسالةوتسجل رسالة قائمة انتظار ناقل الخدمة.
const { app } = require('@azure/functions');
app.serviceBusQueue('serviceBusQueueTrigger1', {
connection: 'MyServiceBusConnection',
queueName: 'testqueue',
handler: (message, context) => {
context.log('Service bus queue function processed message:', message);
context.log('EnqueuedTimeUtc =', context.triggerMetadata.enqueuedTimeUtc);
context.log('DeliveryCount =', context.triggerMetadata.deliveryCount);
context.log('MessageId =', context.triggerMetadata.messageId);
},
});
يُظهر المثال التالي ربط بيانات ناتج ناقل خدمة Azure في ملف function.json ودالة PowerShell التي تستخدم ربط البيانات.
فيما يلي بيانات الربط في ملفfunction.json:
{
"bindings": [
{
"name": "mySbMsg",
"type": "serviceBusTrigger",
"direction": "in",
"topicName": "mytopic",
"subscriptionName": "mysubscription",
"connection": "AzureServiceBusConnectionString"
}
]
}
إليك الدالة التي تعمل عند إرسال رسالة ناقل الخدمة.
param([string] $mySbMsg, $TriggerMetadata)
Write-Host "PowerShell ServiceBus queue trigger function processed message: $mySbMsg"
يوضح المثال التالي كيفية قراءة رسالة قائمة انتظار ناقل الخدمة عبر مشغل. يعتمد المثال على ما إذا كنت تستخدم نموذج برمجة v1 أو v2 Python.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="ServiceBusQueueTrigger1")
@app.service_bus_queue_trigger(arg_name="msg",
queue_name="<QUEUE_NAME>",
connection="<CONNECTION_SETTING>")
def test_function(msg: func.ServiceBusMessage):
logging.info('Python ServiceBus queue trigger processed message: %s',
msg.get_body().decode('utf-8'))
يوضح المثال التالي كيفية قراءة موضوع قائمة انتظار ناقل خدمة Microsoft Azure عبر مشغل.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="ServiceBusTopicTrigger1")
@app.service_bus_topic_trigger(arg_name="message",
topic_name="TOPIC_NAME",
connection="CONNECTION_SETTING",
subscription_name="SUBSCRIPTION_NAME")
def test_function(message: func.ServiceBusMessage):
message_body = message.get_body().decode("utf-8")
logging.info("Python ServiceBus topic trigger processed message.")
logging.info("Message Body: " + message_body)
السمات
تستخدم مكتبات C# العملية والعامل المعزولة السمة ServiceBusTriggerAttribute لتعريف مشغل الدالة. يستخدم البرنامج النصي C# بدلا من ذلك ملف تكوين function.json كما هو موضح في دليل البرمجة النصية C#.
يوضح الجدول التالي الخصائص التي يمكنك تعيينها باستخدام سمة المشغل هذه:
الخاصية | الوصف |
---|---|
QueueName | اسم قائمة الانتظار لمراقبة. تعيين فقط في حالة مراقبة قائمة انتظار، وليس لموضوع. |
اسم الموضوع | اسم الموضوع الذي يجب مراقبته. تعيين فقط إذا كان يراقب موضوعًا، وليس لقائمة انتظار. |
اسم الاشتراك | اسم الاشتراك للمراقبة. تعيين فقط إذا كان يراقب موضوعًا، وليس لقائمة انتظار. |
Connection | اسم إعداد تطبيق أو مجموعة إعداد تحدد كيفية الاتصال بخدمة الناقل. راجع الاتصالات. |
IsBatched | يتم تسليم الرسائل على دفعات. يتطلب صفيف أو نوع مجموعة. |
IsSessionsEnabled | true إذا كان الاتصال بقائمة انتظار أو اشتراك على علم بجلسة العمل. false خلاف ذلك، وهي القيمة الافتراضية. |
رسائل الإكمال التلقائي | true إذا كان يجب أن يكمل المشغل الرسالة تلقائيا بعد استدعاء ناجح. false إذا كان لا ينبغي، مثل عند معالجة تسوية الرسائل في التعليمات البرمجية. إذا لم يتم تعيينه بشكل صريح، فسيستند السلوك إلى التكوين في host.json .autoCompleteMessages |
عندما تقوم بالتطوير محليًا، أضف إعدادات التطبيق في ملف local.settings.json في المجموعة Values
.
الديكور
ينطبق فقط على نموذج برمجة Python v2.
بالنسبة لوظائف Python v2 المعرفة باستخدام مصمم الديكور، الخصائص التالية على service_bus_queue_trigger
:
الخاصية | الوصف |
---|---|
arg_name |
اسم المتغير الذي يُمثل قائمة الانتظار أو رسالة الموضوع في التعليمات البرمجية للدالة. |
queue_name |
اسم قائمة الانتظار لمراقبة. تعيين فقط في حالة مراقبة قائمة انتظار، وليس لموضوع. |
connection |
اسم إعداد تطبيق أو مجموعة إعداد تحدد كيفية الاتصال بخدمة الناقل. راجع الاتصالات. |
للحصول على وظائف Python المعرفة باستخدام function.json، راجع قسم التكوين.
تعليقات توضيحية
يسمحServiceBusQueueTrigger
لك التعليق التوضيحي بإنشاء وظيفة يتم تشغيلها عند إنشاء رسالة قائمة انتظار "ناقل الخدمة". تتضمن خيارات التكوين المتاحة الخصائص التالية:
الخاصية | الوصف |
---|---|
الاسم | اسم المتغير الذي يُمثل قائمة الانتظار أو رسالة الموضوع في التعليمات البرمجية للدالة. |
queueName | اسم قائمة الانتظار لمراقبة. تعيين فقط في حالة مراقبة قائمة انتظار، وليس لموضوع. |
topicName | اسم الموضوع الذي يجب مراقبته. تعيين فقط إذا كان يراقب موضوعًا، وليس لقائمة انتظار. |
اسم الاشتراك | اسم الاشتراك للمراقبة. تعيين فقط إذا كان يراقب موضوعًا، وليس لقائمة انتظار. |
الاتصال | اسم إعداد تطبيق أو مجموعة إعداد تحدد كيفية الاتصال بخدمة الناقل. راجع الاتصالات. |
يسمحServiceBusTopicTrigger
لك التعليق التوضيحي بتعيين موضوع واشتراك لاستهداف البيانات التي تؤدي إلى تشغيل الوظيفة.
عندما تقوم بالتطوير محليًا، أضف إعدادات التطبيق في ملف local.settings.json في المجموعة Values
.
راجع المثال لمزيد من التفاصيل.
التكوين
ينطبق فقط على نموذج برمجة Python v1.
يوضح الجدول التالي الخصائص التي يمكنك تعيينها على الكائن الذي options
تم تمريره app.serviceBusQueue()
إلى الأسلوبين أو app.serviceBusTopic()
.
الخاصية | الوصف |
---|---|
queueName | اسم قائمة الانتظار لمراقبة. تعيين فقط في حالة مراقبة قائمة انتظار، وليس لموضوع. |
topicName | اسم الموضوع الذي يجب مراقبته. تعيين فقط إذا كان يراقب موضوعًا، وليس لقائمة انتظار. |
اسم الاشتراك | اسم الاشتراك للمراقبة. تعيين فقط إذا كان يراقب موضوعًا، وليس لقائمة انتظار. |
الاتصال | اسم إعداد تطبيق أو مجموعة إعداد تحدد كيفية الاتصال بخدمة الناقل. راجع الاتصالات. |
accessRights | حقوق الوصول لسلسلة الاتصال. القيم المتوفرة هي manage وlisten . الافتراضي هو manage ، الذي يشير إلى أن connection لديه إذن الإدارة. إذا كنت تستخدم سلسلة اتصال ليس لديها إذن الإدارة، قم بتعيين accessRights إلى "الاستماع". وإلا، قد تفشل وقت تشغيل الدالات في محاولة القيام بعمليات تتطلب إدارة الحقوق. في Azure Functions الإصدار 2.x والإصدارات الأحدث، هذه الخاصية غير متوفرة لأن الإصدار الأحدث من عدة تطوير البرامج لناقل خدمة Azure لا تدعم إدارة العمليات. |
isSessionsEnabled | true إذا كان الاتصال بقائمة انتظار أو اشتراك على علم بجلسة العمل. false خلاف ذلك، وهي القيمة الافتراضية. |
autoComplete | يجب أن يكون true للوظائف بخلاف C#، ما يعني أنه يجب على المشغل إما الاتصال تلقائياً بعد المعالجة، أو اكتمال استدعاءات كود الوظيفة يدوياً.عند التعيين على true ، يكمل المشغل الرسالة تلقائياً إذا اكتمل تنفيذ الوظيفة بنجاح، ويتخلى عن الرسالة بخلاف ذلك.تؤدي الاستثناءات في الوظيفة إلى استدعاءات وقت التشغيل abandonAsync في الخلفية. إذا لم يحدث استثناء، فسيتمcompleteAsync استدعاء في الخلفية. هذه الخاصية متاحة فقط في وظائف Azure 2.x والإصدارات الأحدث. |
عندما تقوم بالتطوير محليًا، أضف إعدادات التطبيق في ملف local.settings.json في المجموعة Values
.
يشرح الجدول الآتي خصائص تكوين ربط البيانات التي عليك تعيينها في ملف function.json.
خاصية function.json | الوصف |
---|---|
النوع | يجب تعيينه إلى serviceBusTrigger . يتم تعيين هذه الخاصية تلقائيا عند إنشاء المشغل في مدخل Microsoft Azure. |
الاتجاه | يجب التعيين إلى "داخل". يتم تعيين هذه الخاصية تلقائيا عند إنشاء المشغل في مدخل Microsoft Azure. |
الاسم | اسم المتغير الذي يُمثل قائمة الانتظار أو رسالة الموضوع في التعليمات البرمجية للدالة. |
queueName | اسم قائمة الانتظار لمراقبة. تعيين فقط في حالة مراقبة قائمة انتظار، وليس لموضوع. |
topicName | اسم الموضوع الذي يجب مراقبته. تعيين فقط إذا كان يراقب موضوعًا، وليس لقائمة انتظار. |
اسم الاشتراك | اسم الاشتراك للمراقبة. تعيين فقط إذا كان يراقب موضوعًا، وليس لقائمة انتظار. |
الاتصال | اسم إعداد تطبيق أو مجموعة إعداد تحدد كيفية الاتصال بخدمة الناقل. راجع الاتصالات. |
accessRights | حقوق الوصول لسلسلة الاتصال. القيم المتوفرة هي manage وlisten . الافتراضي هو manage ، الذي يشير إلى أن connection لديه إذن الإدارة. إذا كنت تستخدم سلسلة اتصال ليس لديها إذن الإدارة، قم بتعيين accessRights إلى "الاستماع". وإلا، قد تفشل وقت تشغيل الدالات في محاولة القيام بعمليات تتطلب إدارة الحقوق. في Azure Functions الإصدار 2.x والإصدارات الأحدث، هذه الخاصية غير متوفرة لأن الإصدار الأحدث من عدة تطوير البرامج لناقل خدمة Azure لا تدعم إدارة العمليات. |
isSessionsEnabled | true إذا كان الاتصال بقائمة انتظار أو اشتراك على علم بجلسة العمل. false خلاف ذلك، وهي القيمة الافتراضية. |
autoComplete | يجب أن يكون true للوظائف بخلاف C#، ما يعني أنه يجب على المشغل إما الاتصال تلقائياً بعد المعالجة، أو اكتمال استدعاءات كود الوظيفة يدوياً.عند التعيين على true ، يكمل المشغل الرسالة تلقائياً إذا اكتمل تنفيذ الوظيفة بنجاح، ويتخلى عن الرسالة بخلاف ذلك.تؤدي الاستثناءات في الوظيفة إلى استدعاءات وقت التشغيل abandonAsync في الخلفية. إذا لم يحدث استثناء، فسيتمcompleteAsync استدعاء في الخلفية. هذه الخاصية متاحة فقط في وظائف Azure 2.x والإصدارات الأحدث. |
عندما تقوم بالتطوير محليًا، أضف إعدادات التطبيق في ملف local.settings.json في المجموعة Values
.
راجع قسم Example للحصول على أمثلة كاملة.
الاستخدام
يتم دعم أنواع المعلمات التالية بواسطة جميع طرائق C# وإصدارات الملحق:
النوع | الوصف |
---|---|
System.String | استخدم عندما تكون الرسالة نصاً بسيطاً. |
byte[] | استخدم لرسائل البيانات الثنائية. |
الكائن | عندما تحتوي رسالة على JSON، تحاول الوظائف إلغاء تسلسل بيانات JSON إلى نوع عنصر CLR القديم المعروف. |
تحتوي أنواع المعلمات الخاصة بالرسائل على بيانات تعريف إضافية للرسائل. تعتمد الأنواع المحددة التي يدعمها مشغل ناقل خدمة Microsoft Azure على إصدار وقت تشغيل الوظائف وإصدار حزمة الملحق وطريقة C# المستخدمة.
عندما تريد أن تعالج الدالة رسالة واحدة، يمكن ربط مشغل ناقل الخدمة بالأنواع التالية:
النوع | الوصف |
---|---|
string |
الرسالة كسلسلة. استخدم عندما تكون الرسالة نصاً بسيطاً. |
byte[] |
وحدات البايت للرسالة. |
أنواع قابلة للتسلسل إلى JSON | عندما يحتوي حدث على بيانات JSON، تحاول الدالات إلغاء تسلسل بيانات JSON إلى نوع كائن CLR (POCO) قديم عادي. |
ServiceBusReceivedMessage1 | كائن الرسالة. عند الربط ب ServiceBusReceivedMessage ، يمكنك اختياريا أيضا تضمين معلمة من نوع ServiceBusMessageActions1,2 لتنفيذ إجراءات تسوية الرسائل. |
عندما تريد أن تعالج الدالة دفعة من الرسائل، يمكن ربط مشغل ناقل الخدمة بالأنواع التالية:
النوع | الوصف |
---|---|
T[] حيث T هو أحد أنواع الرسائل الفردية |
صفيف من الأحداث من الدفعة. يمثل كل إدخال حدثا واحدا. عند الربط ب ServiceBusReceivedMessage[] ، يمكنك اختياريا أيضا تضمين معلمة من نوع ServiceBusMessageActions1,2 لتنفيذ إجراءات تسوية الرسائل. |
1 لاستخدام هذه الأنواع، تحتاج إلى الرجوع إلى Microsoft.Azure.Functions.Worker.Extensions.ServiceBus 5.14.1 أو أحدث والتبعيات الشائعة لروابط نوع SDK.
2 عند استخدام ServiceBusMessageActions
، قم بتعيين AutoCompleteMessages
خاصية سمة المشغل إلى false
. يمنع هذا وقت التشغيل من محاولة إكمال الرسائل بعد استدعاء دالة ناجحة.
عندما لا يتم تعريف الخاصية Connection
، تبحث الوظائف عن إعداد تطبيق يسمى AzureWebJobsServiceBus
، وهو الاسم الافتراضي لسلسلة اتصال ناقل خدمة Microsoft Azure. يمكنك أيضاً تعيين الخاصية Connection
لتحديد اسم إعداد التطبيق الذي يحتوي على سلسلة اتصال ناقل خدمة Microsoft Azure المراد استخدامها.
تتوفر رسالة "ناقل الخدمة" الواردة عبر ServiceBusQueueMessage
أوServiceBusTopicMessage
معلمة.
يتوفر مثيل ناقل الخدمة عبر المعلمة التي تم تكوينها فيخاصية اسم الملف function.json.
تتوفر رسالة قائمة الانتظار للوظيفة عبر معلمة مكتوبة كـfunc.ServiceBusMessage
. يتم تمرير رسالة "ناقل الخدمة" إلى الدالة كسلسلة أو كائن JSON.
للحصول على مثال كامل، راجع قسم الأمثلة.
الاتصالات
خاصية connection
هي إشارة إلى تكوين البيئة الذي يحدد كيفية اتصال التطبيق بـ Service Bus. ويجوز لها أن تحدد ما يلي:
- اسم أحد إعدادات التطبيق الذي يحتوي على سلسلة اتصال
- اسم بادئة مشتركة لإعدادات تطبيق متعددة، مع تعريف اتصال يستند إلى الهوية معًا.
إذا كانت القيمة المكونة مطابقة بدقة لإعداد واحد ومطابقة لبادئة للإعدادات الأخرى، يتم استخدام المطابقة الدقيقة.
سلسلة الاتصال
للحصول على سلسلة اتصال، اتبع الخطوات المبينة في احصل على بيانات اعتماد الإدارة. يجب أن تكون سلسلة الاتصال لمساحة اسم Service Bus لا تقتصر على قائمة انتظار أو موضوع معين.
يجب تخزين سلسلة الاتصال هذه في إعداد تطبيق باسم يطابق القيمة المحددة بواسطة خاصية connection
لتكوين الربط.
إذا بدأ اسم إعداد التطبيق بـ «AzureWebJobs»، يمكنك تحديد ما تبقى من الاسم فقط. على سبيل المثال، إذا قمت بتعيين connection
على «MyServiceBus»، فإن وقت تشغيل Functions يبحث عن إعداد تطبيق يسمى «AzureWebJobsMyServiceBus». إذا تركت connection
فارغًا، فإن وقت تشغيل Functions يستخدم سلسلة اتصال Service Bus الافتراضية في إعداد التطبيق المسمى «AzureWebJobsServiceBus».
الاتصالات القائمة على الهوية
إذا كنت تستخدم الإصدار 5.x أو أعلى من الملحق، فبدلا من استخدام سلسلة الاتصال مع سر، يمكنك أن يكون التطبيق يستخدم هوية Microsoft Entra. للقيام بذلك، يمكنك تحديد الإعدادات تحت بادئة مشتركة والتي تقوم بالتعيين إلى خاصية connection
في تكوين المشغل والربط.
في هذا الوضع، يتطلب الملحق الخصائص التالية:
الخاصية | قالب متغير البيئة | الوصف | مثال للقيمة |
---|---|---|---|
مساحة اسم مؤهلة بالكامل | <CONNECTION_NAME_PREFIX>__fullyQualifiedNamespace |
مساحة الاسم الخاصة بـ Service Bus المؤهلة بالكامل. | <service_bus_namespace>.servicebus.windows.net |
قد يتم تعيين خصائص إضافية لتخصيص الاتصال. راجع الخصائص الشائعة للاتصالات المعتمدة على الهوية.
إشعار
عند استخدام Azure App Configuration أو Key Vault لتوفير إعدادات لاتصالات الهوية المُدارة، يجب أن تستخدم أسماء الإعداد فاصل مفاتيح صالح مثل :
أو /
بدلاً من __
لضمان حل الأسماء بشكل صحيح.
على سبيل المثال، <CONNECTION_NAME_PREFIX>:fullyQualifiedNamespace
عند استضافتها في خدمة Azure Functions، تستخدم الاتصالات المستندة إلى الهوية هوية مدارة. تستخدم الهوية المعينة من قبل النظام بشكل افتراضي على الرغم من إمكانية تحديد هوية معينة من قبل المستخدم مع خصائص credential
و clientID
. لاحظ أن تكوين هوية معينة من المستخدم باستخدام معرف مورد غير معتمد. عند التشغيل في سياقات أخرى، مثل التنمية المحلية، يتم استخدام هوية المطور الخاصة بك بدلًا من ذلك، على الرغم من أنه يمكن تخصيصها. راجع التطوير المحلي من خلال الاتصالات القائمة على الهوية.
منح الإذن للهوية
مهما كانت الهوية المستخدمة يجب أن يكون لديك أذونات لتنفيذ الإجراءات المقصودة. بالنسبة لمعظم خدمات Azure، يعني هذا أنك بحاجة إلى تعيين دور في Azure RBAC، باستخدام أدوار مضمنة أو مخصصة توفر هذه الأذونات.
هام
قد تعرض بعض الأذونات بواسطة الخدمة الهدف غير الضرورية لكافة السياقات. حيثما أمكن، الالتزام بمبدأ أقل امتيازومنح الهوية الامتيازات المطلوبة فقط. على سبيل المثال، إذا كان التطبيق يحتاج إلى أن يكون قادرًا على القراءة من مصدر بيانات فحسب، فاستخدم دورًا لديه إذن للقراءة فحسب. سيكون من غير المناسب إسناد دور يسمح أيضا بالكتابة إلى تلك الدائرة، لأن ذلك سيكون إذنًا مفرطًا لعملية قراءة. وبالمثل، قد ترغب في ضمان تحديد نطاق تعيين الدور فقط على الموارد التي تحتاج إلى قراءة.
ستحتاج إلى إنشاء تعيين الدور الذي يوفر الوصول إلى مواضيعك وقوائم الانتظار في وقت التشغيل. أدوار الإدارة مثل المالك ليست كافية. يبين الجدول التالي الأدوار المدمجة الموصى بها عند استخدام ملحق Service Bus في التشغيل العادي. قد يتطلب طلبك أذونات إضافية بناءً على الرمز الذي تكتبه.
نوع الربط | مثال على الأدوار المضمنة |
---|---|
المشغل1 | Azure Service Bus Data Receiver، وAzure Service Bus Data Owner |
ربط بيانات الإخراج | مرسل بيانات ناقل خدمة Azure |
1 للتشغيل من مواضيع Service Bus، يجب أن يكون لتعيين الدور نطاق فعال على مورد اشتراك Service Bus. إذا تم تضمين الموضوع فقط، فسيحدث خطأ. لا يكشف بعض العملاء، مثل مدخل Microsoft Azure، عن مورد اشتراك Service Bus كنطاق لتعيين الأدوار. في مثل هذه الحالات، يمكن استخدام مؤشر Azure CLI بدلًا من ذلك. لمعرفة المزيد، راجع أدوار Azure المضمنة في Azure ناقل خدمة Microsoft Azure.
رسالة غير قابلة للمعالجة
لا يمكن التحكم في معالجة الرسائل الغير قابلة للمعالجة أو تكوينها في وظائف Azure. يتعامل ناقل الخدمة مع الرسائل الغير قابلة للمعالجة نفسها.
سلوك PeekLock
يتلقى وقت تشغيل الدالات رسالة في وضع PeekLock.
بشكل افتراضي، يستدعي Complete
وقت التشغيل على الرسالة إذا انتهت الدالة بنجاح، أو يستدعي Abandon
إذا فشلت الدالة. يمكنك تعطيل الإكمال التلقائي من خلال الخاصية autoCompleteMessages
في host.json
.
بشكل افتراضي، يستدعي Complete
وقت التشغيل على الرسالة إذا انتهت الدالة بنجاح، أو يستدعي Abandon
إذا فشلت الدالة. يمكنك تعطيل الإكمال التلقائي من خلال الخاصية autoCompleteMessages
في host.json
أو من خلال خاصية على سمة المشغل. يجب تعطيل الإكمال التلقائي إذا كان رمز الدالة يعالج تسوية الرسائل.
إذا كانت الدالة تعمل لفترة أطول منPeekLock
المهلة، يتم تجديد القفل تلقائيًا طالما كانت الوظيفة قيد التشغيل. maxAutoRenewDuration
هو قابل للتكوين في host.json، الذي يعين إلى ServiceBusProcessor.MaxAutoLockRenewalDuration. القيمة الافتراضية لهذا الإعداد هي 5 دقائق.
بيانات تعريف الرسالة
تتيح لك الأنواع الخاصة بالمراسلة إمكانية استرداد بيانات التعريف بسهولة كخصائص للعنصر. تعتمد هذه الخصائص على إصدار وقت تشغيل الوظائف وإصدار حزمة الملحق وطريقة C# المستخدمة.
هذه الخصائص هي أعضاء في فئة ServiceBusReceivedMessage.
الخاصية | نوع | الوصف |
---|---|---|
ApplicationProperties |
ApplicationProperties |
الخصائص التي تم تعيينها بواسطة المرسل. |
ContentType |
string |
معرّف نوع المحتوى يستخدمه المرسل والمتلقي لمنطق خاص بالتطبيق. |
CorrelationId |
string |
معرف الارتباط. |
DeliveryCount |
Int32 |
عدد عمليات التسليم. |
EnqueuedTime |
DateTime |
الوقت المحدد في UTC. |
ScheduledEnqueueTimeUtc |
DateTime |
الوقت المجدول في قائمة الانتظار بالتوقيت العالمي المتفق عليه. |
ExpiresAt |
DateTime |
وقت انتهاء الصلاحية في UTC. |
MessageId |
string |
قيمة معرّفة من قبل المستخدم يمكن لناقل الخدمة استخدامها لتحديد الرسائل المكررة، إذا تم تمكينها. |
ReplyTo |
string |
الرد على عنوان قائمة الانتظار. |
Subject |
string |
التسمية الخاصة بالتطبيق والتي يمكن استخدامها بدلًا من خاصيةLabel البيانات الوصفية. |
To |
string |
إرسال إلى العنوان. |