Az Azure Szolgáltatásbusz-kötések az Azure Functions szolgáltatáshozAzure Service Bus bindings for Azure Functions

Ez a cikk ismerteti az Azure Service Bus-kötések az Azure Functions használata.This article explains how to work with Azure Service Bus bindings in Azure Functions. Az Azure Functions támogatja a-trigger, és a kimeneti kötések Service Bus-üzenetsorok és üzenettémák esetében.Azure Functions supports trigger and output bindings for Service Bus queues and topics.

Ez az információ az Azure Functions-fejlesztők számára.This is reference information for Azure Functions developers. Ha most ismerkedik az Azure Functions, indítsa el az alábbi forrásanyagokat:If you're new to Azure Functions, start with the following resources:

Csomagok – 1.x függvényekPackages - Functions 1.x

A Service Bus kötéseit szerepelnek a Microsoft.Azure.WebJobs.ServiceBus NuGet-csomag verziója 2.x.The Service Bus bindings are provided in the Microsoft.Azure.WebJobs.ServiceBus NuGet package, version 2.x.

Az alábbi táblázat bemutatja, hogyan lehet ezt a kötést támogatása hozzáadva minden fejlesztési környezetben.The following table tells how to add support for this binding in each development environment.

Fejlesztési környezetDevelopment environment A támogatás hozzáadásaTo add support in
Functions 1.xFunctions 1.x
Helyi fejlesztés – C# osztálytárLocal development - C# class library A csomag telepítéseInstall the package
Helyi fejlesztés – C# parancsfájl, JavaScript,F#Local development - C# script, JavaScript, F# AutomatikusAutomatic
A fejlesztői portálPortal development AutomatikusAutomatic

Csomagok – 2.x függvényekPackages - Functions 2.x

A Service Bus kötéseit szerepelnek a Microsoft.Azure.WebJobs.Extensions.ServiceBus NuGet-csomag verziója 3.x.The Service Bus bindings are provided in the Microsoft.Azure.WebJobs.Extensions.ServiceBus NuGet package, version 3.x. A csomag forráskódja a azure-webjobs-sdk GitHub-adattárban.Source code for the package is in the azure-webjobs-sdk GitHub repository.

Az alábbi táblázat bemutatja, hogyan lehet ezt a kötést támogatása hozzáadva minden fejlesztési környezetben.The following table tells how to add support for this binding in each development environment.

Fejlesztési környezetDevelopment environment A támogatás hozzáadásaTo add support in
Functions 2.xFunctions 2.x
Helyi fejlesztés – C# osztálytárLocal development - C# class library A csomag telepítéseInstall the package
Helyi fejlesztés – C# parancsfájl, JavaScript, F#, Java és Python nyelvenLocal development - C# script, JavaScript, F#, Java and Python A bővítmény regisztrálásaRegister the extension
A fejlesztői portálPortal development Telepítse a kimeneti kötés hozzáadása soránInstall when adding output binding

Megtudhatja, hogyan lehet frissíteni a létező kötés bővítmények a portálon való ismételt közzétételéhez a függvényalkalmazás projektjét nélkül, tekintse meg a a bővítmények frissítése.To learn how to update existing binding extensions in the portal without having to republish your function app project, see Update your extensions.

EseményindítóTrigger

A Service Bus-trigger használatával üzeneteket egy Service Bus-üzenetsor vagy témakör válaszol.Use the Service Bus trigger to respond to messages from a Service Bus queue or topic.

Az eseményindító – példaTrigger - example

Tekintse meg az adott nyelvű példa:See the language-specific example:

Eseményindító - C#-példaTrigger - C# example

A következő példa bemutatja egy C#-függvény , amely beolvassa üzenet metaadatok és a egy Service Bus üzenetsor üzenetet:The following example shows a C# function that reads message metadata and logs a Service Bus queue message:

[FunctionName("ServiceBusQueueTriggerCSharp")]                    
public static void Run(
    [ServiceBusTrigger("myqueue", AccessRights.Manage, Connection = "ServiceBusConnection")] 
    string myQueueItem,
    Int32 deliveryCount,
    DateTime enqueuedTimeUtc,
    string messageId,
    ILogger log)
{
    log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
    log.LogInformation($"EnqueuedTimeUtc={enqueuedTimeUtc}");
    log.LogInformation($"DeliveryCount={deliveryCount}");
    log.LogInformation($"MessageId={messageId}");
}

Ebben a példában az Azure Functions-verzióhoz tartozó 1.x.This example is for Azure Functions version 1.x. Ahhoz, hogy ez a kód 2.x számára:To make this code work for 2.x:

Eseményindító - C#-szkript példaTrigger - C# script example

Az alábbi példa bemutatja egy kötelező a Service Bus-trigger egy function.json fájl és a egy C#-szkriptfüggvény , amely a kötés használja.The following example shows a Service Bus trigger binding in a function.json file and a C# script function that uses the binding. A függvény beolvassa üzenet metaadatok és a egy Service Bus üzenetsor üzenetet.The function reads message metadata and logs a Service Bus queue message.

Itt van a kötési adatait a function.json fájlt:Here's the binding data in the function.json file:

{
"bindings": [
    {
    "queueName": "testqueue",
    "connection": "MyServiceBusConnection",
    "name": "myQueueItem",
    "type": "serviceBusTrigger",
    "direction": "in"
    }
],
"disabled": false
}

Íme a C#-szkriptkódot:Here's the C# script code:

using System;

public static void Run(string myQueueItem,
    Int32 deliveryCount,
    DateTime enqueuedTimeUtc,
    string messageId,
    TraceWriter log)
{
    log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}");

    log.Info($"EnqueuedTimeUtc={enqueuedTimeUtc}");
    log.Info($"DeliveryCount={deliveryCount}");
    log.Info($"MessageId={messageId}");
}

Eseményindító - F# példaTrigger - F# example

Az alábbi példa bemutatja egy kötelező a Service Bus-trigger egy function.json fájl és a egy F# függvény , amely a kötés használja.The following example shows a Service Bus trigger binding in a function.json file and an F# function that uses the binding. A függvény egy Service Bus üzenetsor-üzenetet naplózza.The function logs a Service Bus queue message.

Itt van a kötési adatait a function.json fájlt:Here's the binding data in the function.json file:

{
"bindings": [
    {
    "queueName": "testqueue",
    "connection": "MyServiceBusConnection",
    "name": "myQueueItem",
    "type": "serviceBusTrigger",
    "direction": "in"
    }
],
"disabled": false
}

Íme a F# parancsfájl-kódot:Here's the F# script code:

let Run(myQueueItem: string, log: ILogger) =
    log.LogInformation(sprintf "F# ServiceBus queue trigger function processed message: %s" myQueueItem)

Eseményindító - Java-példábanTrigger - Java example

A következő Java-függvény a @ServiceBusQueueTrigger Java functions Runtime könyvtárának megjegyzését használja egy Service Bus üzenetsor-trigger konfigurációjának leírásához.The following Java function uses the @ServiceBusQueueTrigger annotation from the Java functions runtime library to describe the configuration for a Service Bus queue trigger. A függvény megragadja a várólistára helyezett üzenetet, és hozzáadja azt a naplókhoz.The function grabs the message placed on the queue and adds it to the logs.

@FunctionName("sbprocessor")
 public void serviceBusProcess(
    @ServiceBusQueueTrigger(name = "msg",
                             queueName = "myqueuename",
                             connection = "myconnvarname") String message,
   final ExecutionContext context
 ) {
     context.getLogger().info(message);
 }

A Java-függvények akkor is elindíthatók, amikor egy üzenet bekerül egy Service Bus témakörbe.Java functions can also be triggered when a message is added to a Service Bus topic. Az alábbi példa a @ServiceBusTopicTrigger jegyzetet használja az trigger konfigurációjának leírásához.The following example uses the @ServiceBusTopicTrigger annotation to describe the trigger configuration.

@FunctionName("sbtopicprocessor")
    public void run(
        @ServiceBusTopicTrigger(
            name = "message",
            topicName = "mytopicname",
            subscriptionName = "mysubscription",
            connection = "ServiceBusConnection"
        ) String message,
        final ExecutionContext context
    ) {
        context.getLogger().info(message);
    }

Eseményindító - JavaScript-példaTrigger - JavaScript example

Az alábbi példa bemutatja egy kötelező a Service Bus-trigger egy function.json fájl és a egy JavaScript-függvény , amely a kötés használja.The following example shows a Service Bus trigger binding in a function.json file and a JavaScript function that uses the binding. A függvény beolvassa üzenet metaadatok és a egy Service Bus üzenetsor üzenetet.The function reads message metadata and logs a Service Bus queue message.

Itt van a kötési adatait a function.json fájlt:Here's the binding data in the function.json file:

{
"bindings": [
    {
    "queueName": "testqueue",
    "connection": "MyServiceBusConnection",
    "name": "myQueueItem",
    "type": "serviceBusTrigger",
    "direction": "in"
    }
],
"disabled": false
}

Íme a szkript JavaScript-kódot:Here's the JavaScript script code:

module.exports = function(context, myQueueItem) {
    context.log('Node.js ServiceBus queue trigger function processed message', myQueueItem);
    context.log('EnqueuedTimeUtc =', context.bindingData.enqueuedTimeUtc);
    context.log('DeliveryCount =', context.bindingData.deliveryCount);
    context.log('MessageId =', context.bindingData.messageId);
    context.done();
};

Trigger – Python-példaTrigger - Python example

Az alábbi példa bemutatja, hogyan olvashat egy ServiceBus üzenetsor-üzenetet egy trigger használatával.The following example demonstrates how to read a ServiceBus queue message via a trigger.

ServiceBus kötés van definiálva a function. JSON fájlban , ahol a Type serviceBusTriggerérték van beállítva.A ServiceBus binding is defined in function.json where type is set to serviceBusTrigger.

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "msg",
      "type": "serviceBusTrigger",
      "direction": "in",
      "queueName": "inputqueue",
      "connection": "AzureServiceBusConnectionString"
    }
  ]
}

Az func.ServiceBusMessage _init.a(z)rendszerbelikóddeklarálegyparamétert,amelylehetővéteszi,hogybeolvassaazüzenetsor-üzenetetafüggvényben._The code in _init_.py declares a parameter as func.ServiceBusMessage which allows you to read the queue message in your function.

import azure.functions as func

import logging
import json

def main(msg: func.ServiceBusMessage):
    logging.info('Python ServiceBus queue trigger processed message.')

    result = json.dumps({
        'message_id': msg.message_id,
        'body': msg.get_body().decode('utf-8'),
        'content_type': msg.content_type,
        'expiration_time': msg.expiration_time,
        'label': msg.label,
        'partition_key': msg.partition_key,
        'reply_to': msg.reply_to,
        'reply_to_session_id': msg.reply_to_session_id,
        'scheduled_enqueue_time': msg.scheduled_enqueue_time,
        'session_id': msg.session_id,
        'time_to_live': msg.time_to_live,
        'to': msg.to,
        'user_properties': msg.user_properties,
    })

    logging.info(result)

Eseményindító - attribútumokTrigger - attributes

A C#-osztálykódtárakat, használja a következő attribútumok egy Service Bus-trigger konfigurálásához:In C# class libraries, use the following attributes to configure a Service Bus trigger:

  • ServiceBusTriggerAttributeServiceBusTriggerAttribute

    Az attribútum konstruktorának paramétereként az üzenetsor vagy témakör és előfizetés nevét.The attribute's constructor takes the name of the queue or the topic and subscription. Az Azure Functions verzió 1.x, azt is megadhatja a kapcsolat hozzáférési jogosultságokat.In Azure Functions version 1.x, you can also specify the connection's access rights. Ha nem ad meg hozzáférési jogosultságokat, az alapértelmezett érték Manage.If you don't specify access rights, the default is Manage. További információkért lásd: a eseményindító - konfiguráció szakaszban.For more information, see the Trigger - configuration section.

    A következő példa bemutatja, az attribútum egy karakterlánc-paraméterrel használja:Here's an example that shows the attribute used with a string parameter:

    [FunctionName("ServiceBusQueueTriggerCSharp")]                    
    public static void Run(
        [ServiceBusTrigger("myqueue")] string myQueueItem, ILogger log)
    {
        ...
    }
    

    Beállíthatja a Connection tulajdonság megadása a Service Bus-fiókot szeretne használni, az alábbi példában látható módon:You can set the Connection property to specify the Service Bus account to use, as shown in the following example:

    [FunctionName("ServiceBusQueueTriggerCSharp")]                    
    public static void Run(
        [ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] 
        string myQueueItem, ILogger log)
    {
        ...
    }
    

    Egy teljes példa: eseményindító – C#-példa.For a complete example, see Trigger - C# example.

  • ServiceBusAccountAttributeServiceBusAccountAttribute

    Adja meg a Service Bus használni kívánt fiók egy másik megoldást kínál.Provides another way to specify the Service Bus account to use. A konstruktorban vesz igénybe egy Service Bus kapcsolati karakterláncot tartalmazó alkalmazásbeállítás neve.The constructor takes the name of an app setting that contains a Service Bus connection string. Az attribútum a paramétert, a metódus vagy az osztály szintjén alkalmazhatók.The attribute can be applied at the parameter, method, or class level. Az alábbi példa bemutatja az osztály és metódust:The following example shows class level and method level:

    [ServiceBusAccount("ClassLevelServiceBusAppSetting")]
    public static class AzureFunctions
    {
        [ServiceBusAccount("MethodLevelServiceBusAppSetting")]
        [FunctionName("ServiceBusQueueTriggerCSharp")]
        public static void Run(
            [ServiceBusTrigger("myqueue", AccessRights.Manage)] 
            string myQueueItem, ILogger log)
    {
        ...
    }
    

A Service Bus használni kívánt fiók határozza meg a következő sorrendben:The Service Bus account to use is determined in the following order:

  • A ServiceBusTrigger attribútum Connection tulajdonság.The ServiceBusTrigger attribute's Connection property.
  • A ServiceBusAccount a paramétert, amelyek azonos, alkalmazott attribútum a ServiceBusTrigger attribútum.The ServiceBusAccount attribute applied to the same parameter as the ServiceBusTrigger attribute.
  • A ServiceBusAccount attribútum a függvény a alkalmazni.The ServiceBusAccount attribute applied to the function.
  • A ServiceBusAccount attribútum az osztály a alkalmazni.The ServiceBusAccount attribute applied to the class.
  • Az "AzureWebJobsServiceBus" alkalmazásbeállítást.The "AzureWebJobsServiceBus" app setting.

Eseményindító - konfigurációTrigger - configuration

A következő táblázat ismerteti a megadott kötés konfigurációs tulajdonságaiban a function.json fájlt, és a ServiceBusTrigger attribútum.The following table explains the binding configuration properties that you set in the function.json file and the ServiceBusTrigger attribute.

Function.JSON tulajdonságfunction.json property Attribútum tulajdonságaAttribute property LeírásDescription
typetype n/an/a Állítsa "serviceBusTrigger".Must be set to "serviceBusTrigger". Ez a tulajdonság beállítása automatikusan történik, ha az eseményindítót fog létrehozni az Azure Portalon.This property is set automatically when you create the trigger in the Azure portal.
directiondirection n/an/a Meg kell "a".Must be set to "in". Ez a tulajdonság beállítása automatikusan történik, ha az eseményindítót fog létrehozni az Azure Portalon.This property is set automatically when you create the trigger in the Azure portal.
namename n/an/a A függvénykódot az üzenetsor vagy témakör üzenet képviselő változó neve.The name of the variable that represents the queue or topic message in function code. "$Return" hivatkozik a függvény visszaadott értékének beállításával.Set to "$return" to reference the function return value.
queueNamequeueName queueNameQueueName Figyelni kívánt üzenetsor neve.Name of the queue to monitor. Csak akkor, ha egy üzenetsort, nem a témakör a figyelés beállítása.Set only if monitoring a queue, not for a topic.
topicNametopicName topicNameTopicName Figyelendő üzenettéma nevére.Name of the topic to monitor. Csak akkor, ha a figyelést egy üzenetsort, nem egy témakör beállítása.Set only if monitoring a topic, not for a queue.
subscriptionNamesubscriptionName subscriptionNameSubscriptionName Neve a figyelni kívánt előfizetést.Name of the subscription to monitor. Csak akkor, ha a figyelést egy üzenetsort, nem egy témakör beállítása.Set only if monitoring a topic, not for a queue.
kapcsolatconnection kapcsolatConnection A Service Bus kapcsolati karakterlánc használata ehhez a kötéshez tartalmazó alkalmazásbeállítás neve.The name of an app setting that contains the Service Bus connection string to use for this binding. Azon alkalmazásbeállítás neve "AzureWebJobs" kezdődik, ha csak a név része is megadhat.If the app setting name begins with "AzureWebJobs", you can specify only the remainder of the name. Például, ha a beállított connection "MyServiceBus", hogy a Functions futtatókörnyezete úgy tűnik, a beállítás, amely alkalmazás neve "AzureWebJobsMyServiceBus."For example, if you set connection to "MyServiceBus", the Functions runtime looks for an app setting that is named "AzureWebJobsMyServiceBus." Ha meghagyja a connection üres, a Functions futtatókörnyezete alapértelmezett a Service Bus kapcsolati karakterláncát használja a "AzureWebJobsServiceBus" nevű Alkalmazásbeállítás.If you leave connection empty, the Functions runtime uses the default Service Bus connection string in the app setting that is named "AzureWebJobsServiceBus".

A kapcsolódási karakterlánc beszerzéséhez kövesse a felügyeleti hitelesítő adatokbeolvasása című cikkben ismertetett lépéseket.To obtain a connection string, follow the steps shown at Get the management credentials. A kapcsolati karakterláncot a Service Bus-névtér, nem kizárólagosan az adott üzenetsor vagy témakör kell lennie.The connection string must be for a Service Bus namespace, not limited to a specific queue or topic.
accessRightsaccessRights Access (Hozzáférés)Access A kapcsolati karakterlánc hozzáférési jogosultságokat.Access rights for the connection string. Elérhető értékek a következők manage és listen.Available values are manage and listen. Az alapértelmezett érték manage, amely azt jelzi, hogy a connection rendelkezik a kezelés engedéllyel.The default is manage, which indicates that the connection has the Manage permission. Használhat, ha egy kapcsolati karakterláncot, amely nem rendelkezik a kezelés , engedélyének accessRights "figyelésére".If you use a connection string that does not have the Manage permission, set accessRights to "listen". Ellenkező esetben a Functions runtime meghiúsulhat igénylő műveletek végrehajtását kezelésére.Otherwise, the Functions runtime might fail trying to do operations that require manage rights. Az Azure Functions-verzió 2.x, ez a tulajdonság nem érhető el, mert a Storage SDK legújabb verziója nem támogatja a műveletek kezelésére.In Azure Functions version 2.x, this property is not available because the latest version of the Storage SDK doesn't support manage operations.

Ha helyileg fejleszt, Alkalmazásbeállítások lépnek a local.settings.json fájljában.When you're developing locally, app settings go into the local.settings.json file.

Eseményindító - használatTrigger - usage

Az üzenetsor vagy témakör üzenet a C# és a C#-szkript, használhatja a következő paraméter típusa:In C# and C# script, you can use the following parameter types for the queue or topic message:

  • string – Ha az üzenet szövege.string - If the message is text.
  • byte[] -A bináris adatok hasznos.byte[] - Useful for binary data.
  • Egy egyéni típusa – Ha az üzenet tartalmazza JSON-t, az Azure Functions próbálja meg a JSON-adatok deszerializálása.A custom type - If the message contains JSON, Azure Functions tries to deserialize the JSON data.
  • BrokeredMessage-Megadja a deszerializált üzenetet a BrokeredMessage. GetBody<T > () metódussal.BrokeredMessage - Gives you the deserialized message with the BrokeredMessage.GetBody<T>() method.

Az Azure Functions verziójára vonatkoznak ezek a paraméterek 1.x; a 2.x használja Message helyett BrokeredMessage.These parameters are for Azure Functions version 1.x; for 2.x, use Message instead of BrokeredMessage.

A JavaScript, elérése az üzenetsor vagy témakör üzenet context.bindings.<name from function.json>.In JavaScript, access the queue or topic message by using context.bindings.<name from function.json>. A Service Bus-üzenet, a függvény egy karakterlánc vagy a JSON-objektum lett átadva.The Service Bus message is passed into the function as either a string or JSON object.

Eseményindító - ártalmas üzenetekTrigger - poison messages

Ártalmas üzenetek kezelése nem szabályozza és nem konfigurált az Azure Functions szolgáltatásban.Poison message handling can't be controlled or configured in Azure Functions. A Service Bus kezeli az ártalmas üzenetek magát.Service Bus handles poison messages itself.

Eseményindító - PeekLock viselkedésTrigger - PeekLock behavior

A Functions futtatókörnyezete egy üzenet fogadja PeekLock mód.The Functions runtime receives a message in PeekLock mode. Meghívja Complete az üzenetet, ha a függvény sikeresen befejeződik, vagy hívások Abandon , ha a parancs nem működik.It calls Complete on the message if the function finishes successfully, or calls Abandon if the function fails. Ha a függvény futásakor hosszabb, mint a PeekLock időkorlát, a zárolás automatikus megújítása mindaddig, amíg a függvény fut-e.If the function runs longer than the PeekLock timeout, the lock is automatically renewed as long as the function is running.

A maxAutoRenewDuration a Host. JSONfájlban konfigurálható, amely a OnMessageOptions. MaxAutoRenewDurationleképezésére szolgál.The maxAutoRenewDuration is configurable in host.json, which maps to OnMessageOptions.MaxAutoRenewDuration. Ez a beállítás számára engedélyezett maximális érték megfelelően a Service Bus dokumentációja, 5 perc, míg 10 perc az alapértelmezett 5 perces időbeli függvények korlát növeléséhez.The maximum allowed for this setting is 5 minutes according to the Service Bus documentation, whereas you can increase the Functions time limit from the default of 5 minutes to 10 minutes. A Service Bus-funkciók nem szeretné, amely majd, mivel a Service Bus-megújítási korlát túllépését eredményezné.For Service Bus functions you wouldn’t want to do that then, because you’d exceed the Service Bus renewal limit.

Eseményindító - üzenet metaadatokTrigger - message metadata

A Service Bus-trigger biztosít több metaadat-tulajdonságot.The Service Bus trigger provides several metadata properties. Ezek a tulajdonságok a kötési kifejezésekben való használata más kötések részeként vagy a kód paramétereiben használható.These properties can be used as part of binding expressions in other bindings or as parameters in your code. Ezek a tulajdonságai a BrokeredMessage osztály.These are properties of the BrokeredMessage class.

TulajdonságProperty TípusType LeírásDescription
DeliveryCount Int32 A kézbesítések száma.The number of deliveries.
DeadLetterSource string Kézbesítetlen levelek forrása.The dead letter source.
ExpiresAtUtc DateTime A lejárat időpontja (UTC).The expiration time in UTC.
EnqueuedTimeUtc DateTime A várólistán lévő időpontja (UTC).The enqueued time in UTC.
MessageId string Egy felhasználó által definiált érték, amely a Service Bus duplikált üzenetek azonosítására használható, ha engedélyezve van.A user-defined value that Service Bus can use to identify duplicate messages, if enabled.
ContentType string A tartalomtípus a küldő és fogadó az adott logikai alkalmazás által használt azonosítójaA content type identifier utilized by the sender and receiver for application specific logic.
ReplyTo string A válasz várólista-címre.The reply to queue address.
SequenceNumber Int64 Egy üzenetet a Service Bus által hozzárendelt egyedi szám.The unique number assigned to a message by the Service Bus.
To string A küldési címre.The send to address.
Label string Az alkalmazásspecifikus címke.The application specific label.
CorrelationId string A korrelációs azonosítót.The correlation ID.

Megjegyzés

Jelenleg a Service Bus-trigger, amely a munkamenet-kompatibilis várólistákkal és előfizetésekkel működik, előzetes verzióban érhető el.Currently, Service bus trigger that works with session enabled queues and subscriptions is in preview. Ezt az adott tételt a további frissítésekkel kapcsolatban nyomon követheti.Please track this item for any further updates regarding this.

Lásd: kódpéldák , használja ezeket a tulajdonságokat a cikk korábbi részében.See code examples that use these properties earlier in this article.

Eseményindító - host.json tulajdonságaiTrigger - host.json properties

A host.json fájl tartalmazza a Service Bus-eseményindító viselkedését vezérlő beállításokat.The host.json file contains settings that control Service Bus trigger behavior.

{
    "serviceBus": {
      "maxConcurrentCalls": 16,
      "prefetchCount": 100,
      "maxAutoRenewDuration": "00:05:00"
    }
}
TulajdonságProperty AlapértelmezettDefault LeírásDescription
maxConcurrentCallsmaxConcurrentCalls 1616 Egyidejű hívás, amely az üzenet szivattyú kell kezdeményezni a visszahívás maximális számát.The maximum number of concurrent calls to the callback that the message pump should initiate. Alapértelmezés szerint a Functions futtatókörnyezete dolgozza fel a több üzenetet egy időben.By default, the Functions runtime processes multiple messages concurrently. A közvetlen egyszerre csak egy üzenetsor vagy témakör üzenetet feldolgozni a futtatókörnyezetet, állítsa maxConcurrentCalls 1-re.To direct the runtime to process only a single queue or topic message at a time, set maxConcurrentCalls to 1.
prefetchCountprefetchCount n/an/a Az alapértelmezett PrefetchCount, amely az alapul szolgáló MessageReceiver használni fog.The default PrefetchCount that will be used by the underlying MessageReceiver.
maxAutoRenewDurationmaxAutoRenewDuration 00:05:0000:05:00 A maximális időtartamot, amelyen belül az üzenet zárolási újul meg automatikusan.The maximum duration within which the message lock will be renewed automatically.

OutputOutput

Azure Service Bus kimeneti kötés használatával üzenetsor vagy témakör üzeneteket küldeni.Use Azure Service Bus output binding to send queue or topic messages.

Kimenete – példaOutput - example

Tekintse meg az adott nyelvű példa:See the language-specific example:

Kimenet – C#-példaOutput - C# example

A következő példa bemutatja egy C#-függvény , amely egy Service Bus üzenetsor-üzenetet küld:The following example shows a C# function that sends a Service Bus queue message:

[FunctionName("ServiceBusOutput")]
[return: ServiceBus("myqueue", Connection = "ServiceBusConnection")]
public static string ServiceBusOutput([HttpTrigger] dynamic input, ILogger log)
{
    log.LogInformation($"C# function processed: {input.Text}");
    return input.Text;
}

Kimenet – C#-szkript példaOutput - C# script example

Az alábbi példa bemutatja egy kötelező a Service Bus-kimenet egy function.json fájl és a egy C#-szkriptfüggvény , amely a kötés használja.The following example shows a Service Bus output binding in a function.json file and a C# script function that uses the binding. A függvény egy időzítő eseményindító 15 másodpercenként üzenetsori üzenetek küldéséhez használja.The function uses a timer trigger to send a queue message every 15 seconds.

Itt van a kötési adatait a function.json fájlt:Here's the binding data in the function.json file:

{
    "bindings": [
        {
            "schedule": "0/15 * * * * *",
            "name": "myTimer",
            "runsOnStartup": true,
            "type": "timerTrigger",
            "direction": "in"
        },
        {
            "name": "outputSbQueue",
            "type": "serviceBus",
            "queueName": "testqueue",
            "connection": "MyServiceBusConnection",
            "direction": "out"
        }
    ],
    "disabled": false
}

Itt látható C#-szkriptkódot, amely létrehozza egy adott üzenet:Here's C# script code that creates a single message:

public static void Run(TimerInfo myTimer, ILogger log, out string outputSbQueue)
{
    string message = $"Service Bus queue message created at: {DateTime.Now}";
    log.LogInformation(message); 
    outputSbQueue = message;
}

Az alábbiakban C#-szkriptkódot, amely több üzenetet hoz létre:Here's C# script code that creates multiple messages:

public static void Run(TimerInfo myTimer, ILogger log, ICollector<string> outputSbQueue)
{
    string message = $"Service Bus queue messages created at: {DateTime.Now}";
    log.LogInformation(message); 
    outputSbQueue.Add("1 " + message);
    outputSbQueue.Add("2 " + message);
}

Kimenete – F# példaOutput - F# example

Az alábbi példa bemutatja egy kötelező a Service Bus-kimenet egy function.json fájl és a egy F# függvény parancsfájl , amely a kötés használja.The following example shows a Service Bus output binding in a function.json file and an F# script function that uses the binding. A függvény egy időzítő eseményindító 15 másodpercenként üzenetsori üzenetek küldéséhez használja.The function uses a timer trigger to send a queue message every 15 seconds.

Itt van a kötési adatait a function.json fájlt:Here's the binding data in the function.json file:

{
    "bindings": [
        {
            "schedule": "0/15 * * * * *",
            "name": "myTimer",
            "runsOnStartup": true,
            "type": "timerTrigger",
            "direction": "in"
        },
        {
            "name": "outputSbQueue",
            "type": "serviceBus",
            "queueName": "testqueue",
            "connection": "MyServiceBusConnection",
            "direction": "out"
        }
    ],
    "disabled": false
}

Íme F# parancsfájl-kódot, amely létrehozza egy adott üzenet:Here's F# script code that creates a single message:

let Run(myTimer: TimerInfo, log: ILogger, outputSbQueue: byref<string>) =
    let message = sprintf "Service Bus queue message created at: %s" (DateTime.Now.ToString())
    log.LogInformation(message)
    outputSbQueue = message

Kimenet – Java-példábanOutput - Java example

Az alábbi példa bemutatja egy Java-függvény, amely egy üzenetet küld egy Service Bus-üzenetsorba myqueue egy HTTP-kérelem elindításakor.The following example shows a Java function that sends a message to a Service Bus queue myqueue when triggered by a HTTP request.

@FunctionName("httpToServiceBusQueue")
@ServiceBusQueueOutput(name = "message", queueName = "myqueue", connection = "AzureServiceBusConnection")
public String pushToQueue(
  @HttpTrigger(name = "request", methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS)
  final String message,
  @HttpOutput(name = "response") final OutputBinding<T> result ) {
      result.setValue(message + " has been sent.");
      return message;
 }

Az a Java-függvények futásidejű kódtár, használja a @QueueOutput függvény paraméterei, amelynek az értéke egy Service Bus-üzenetsorba tartalmazná a jegyzet.In the Java functions runtime library, use the @QueueOutput annotation on function parameters whose value would be written to a Service Bus queue. A paraméter típusa legyen OutputBinding<T>, ahol a T natív Java bármilyen egy pojo-vá.The parameter type should be OutputBinding<T>, where T is any native Java type of a POJO.

A Java functions is írhat Service Bus témakörbe.Java functions can also write to a Service Bus topic. A következő példa a @ServiceBusTopicOutput jegyzetet használja a kimeneti kötés konfigurációjának leírásához.The following example uses the @ServiceBusTopicOutput annotation to describe the configuration for the output binding.

@FunctionName("sbtopicsend")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
            @ServiceBusTopicOutput(name = "message", topicName = "mytopicname", subscriptionName = "mysubscription", connection = "ServiceBusConnection") OutputBinding<String> message,
            final ExecutionContext context) {
        
        String name = request.getBody().orElse("Azure Functions");

        message.setValue(name);
        return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + name).build();
        
    }

Kimenet – JavaScript-példaOutput - JavaScript example

Az alábbi példa bemutatja egy kötelező a Service Bus-kimenet egy function.json fájl és a egy JavaScript-függvény , amely a kötés használja.The following example shows a Service Bus output binding in a function.json file and a JavaScript function that uses the binding. A függvény egy időzítő eseményindító 15 másodpercenként üzenetsori üzenetek küldéséhez használja.The function uses a timer trigger to send a queue message every 15 seconds.

Itt van a kötési adatait a function.json fájlt:Here's the binding data in the function.json file:

{
    "bindings": [
        {
            "schedule": "0/15 * * * * *",
            "name": "myTimer",
            "runsOnStartup": true,
            "type": "timerTrigger",
            "direction": "in"
        },
        {
            "name": "outputSbQueue",
            "type": "serviceBus",
            "queueName": "testqueue",
            "connection": "MyServiceBusConnection",
            "direction": "out"
        }
    ],
    "disabled": false
}

A következő JavaScript-szkriptkódot, amely létrehozza egy adott üzenet:Here's JavaScript script code that creates a single message:

module.exports = function (context, myTimer) {
    var message = 'Service Bus queue message created at ' + timeStamp;
    context.log(message);   
    context.bindings.outputSbQueue = message;
    context.done();
};

A következő JavaScript-szkriptkódot, amely több üzenetet hoz létre:Here's JavaScript script code that creates multiple messages:

module.exports = function (context, myTimer) {
    var message = 'Service Bus queue message created at ' + timeStamp;
    context.log(message);   
    context.bindings.outputSbQueue = [];
    context.bindings.outputSbQueue.push("1 " + message);
    context.bindings.outputSbQueue.push("2 " + message);
    context.done();
};

Kimenet – Python-példaOutput - Python example

Az alábbi példa bemutatja, hogyan írhat a Pythonban egy ServiceBus-várólistára.The following example demonstrates how to write out to a ServiceBus queue in Python.

A function. JSON fájlban egy ServiceBue-kötési definíció van megadva, ahol a serviceBusType értéke a következő :.A ServiceBue binding definition is defined in function.json where type is set to serviceBus.

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    },
    {
      "type": "serviceBus",
      "direction": "out",
      "connection": "AzureServiceBusConnectionString",
      "name": "msg",
      "queueName": "outqueue"
    }
  ]
}

set Az init._másolás eszközben a metódus értékének megadásával kiírhat egy üzenetet a várólistába. _In _init_.py, you can write out a message to the queue by passing a value to the set method.

import azure.functions as func

def main(req: func.HttpRequest, msg: func.Out[str]) -> func.HttpResponse:

    input_msg = req.params.get('message')

    msg.set(input_msg)

    return 'OK'

Kimenet – attribútumokOutput - attributes

A C#-osztálykódtárakat, használja a ServiceBusAttribute.In C# class libraries, use the ServiceBusAttribute.

Az attribútum konstruktorának paramétereként az üzenetsor vagy témakör és előfizetés nevét.The attribute's constructor takes the name of the queue or the topic and subscription. A kapcsolat hozzáférési jogosultságokat is megadhatja.You can also specify the connection's access rights. A hozzáférési jogosultságokat beállítás kiválasztása ismertetése a kimenete – konfigurációs szakaszban.How to choose the access rights setting is explained in the Output - configuration section. A következő példa bemutatja, az attribútum a függvény visszatérési értéke a alkalmazni:Here's an example that shows the attribute applied to the return value of the function:

[FunctionName("ServiceBusOutput")]
[return: ServiceBus("myqueue")]
public static string Run([HttpTrigger] dynamic input, ILogger log)
{
    ...
}

Beállíthatja a Connection tulajdonság megadása a Service Bus-fiókot szeretne használni, az alábbi példában látható módon:You can set the Connection property to specify the Service Bus account to use, as shown in the following example:

[FunctionName("ServiceBusOutput")]
[return: ServiceBus("myqueue", Connection = "ServiceBusConnection")]
public static string Run([HttpTrigger] dynamic input, ILogger log)
{
    ...
}

Egy teljes példa: kimenet – C#-példa.For a complete example, see Output - C# example.

Használhatja a ServiceBusAccount attribútum adja meg a Service Bus-fiókhoz használandó osztály, módszer vagy paraméter szintjén.You can use the ServiceBusAccount attribute to specify the Service Bus account to use at class, method, or parameter level. További információkért lásd: eseményindító - attribútumok.For more information, see Trigger - attributes.

Kimenete – konfigurációOutput - configuration

A következő táblázat ismerteti a megadott kötés konfigurációs tulajdonságaiban a function.json fájlt, és a ServiceBus attribútum.The following table explains the binding configuration properties that you set in the function.json file and the ServiceBus attribute.

Function.JSON tulajdonságfunction.json property Attribútum tulajdonságaAttribute property LeírásDescription
typetype n/an/a "A serviceBus" kell állítani.Must be set to "serviceBus". Ez a tulajdonság beállítása automatikusan történik, ha az eseményindítót fog létrehozni az Azure Portalon.This property is set automatically when you create the trigger in the Azure portal.
directiondirection n/an/a Állítsa "out".Must be set to "out". Ez a tulajdonság beállítása automatikusan történik, ha az eseményindítót fog létrehozni az Azure Portalon.This property is set automatically when you create the trigger in the Azure portal.
namename n/an/a Az üzenetsor vagy témakör, a függvény kódját képviselő változó neve.The name of the variable that represents the queue or topic in function code. "$Return" hivatkozik a függvény visszaadott értékének beállításával.Set to "$return" to reference the function return value.
queueNamequeueName queueNameQueueName Az üzenetsor neve.Name of the queue. Állítsa be, csak akkor, ha üzenetküldésre üzenetsor, témakör esetében nem.Set only if sending queue messages, not for a topic.
topicNametopicName topicNameTopicName Figyelendő üzenettéma nevére.Name of the topic to monitor. Csak akkor, ha üzenetküldésre témakör, nem a várólista állítsa be.Set only if sending topic messages, not for a queue.
kapcsolatconnection kapcsolatConnection A Service Bus kapcsolati karakterlánc használata ehhez a kötéshez tartalmazó alkalmazásbeállítás neve.The name of an app setting that contains the Service Bus connection string to use for this binding. Azon alkalmazásbeállítás neve "AzureWebJobs" kezdődik, ha csak a név része is megadhat.If the app setting name begins with "AzureWebJobs", you can specify only the remainder of the name. Például, ha a beállított connection "MyServiceBus", hogy a Functions futtatókörnyezete úgy tűnik, a beállítás, amely alkalmazás neve "AzureWebJobsMyServiceBus."For example, if you set connection to "MyServiceBus", the Functions runtime looks for an app setting that is named "AzureWebJobsMyServiceBus." Ha meghagyja a connection üres, a Functions futtatókörnyezete alapértelmezett a Service Bus kapcsolati karakterláncát használja a "AzureWebJobsServiceBus" nevű Alkalmazásbeállítás.If you leave connection empty, the Functions runtime uses the default Service Bus connection string in the app setting that is named "AzureWebJobsServiceBus".

A kapcsolódási karakterlánc beszerzéséhez kövesse a felügyeleti hitelesítő adatokbeolvasása című cikkben ismertetett lépéseket.To obtain a connection string, follow the steps shown at Get the management credentials. A kapcsolati karakterláncot a Service Bus-névtér, nem kizárólagosan az adott üzenetsor vagy témakör kell lennie.The connection string must be for a Service Bus namespace, not limited to a specific queue or topic.
accessRightsaccessRights Access (Hozzáférés)Access A kapcsolati karakterlánc hozzáférési jogosultságokat.Access rights for the connection string. Elérhető értékek a következők manage és listen.Available values are manage and listen. Az alapértelmezett érték manage, amely azt jelzi, hogy a connection rendelkezik a kezelés engedéllyel.The default is manage, which indicates that the connection has the Manage permission. Használhat, ha egy kapcsolati karakterláncot, amely nem rendelkezik a kezelés , engedélyének accessRights "figyelésére".If you use a connection string that does not have the Manage permission, set accessRights to "listen". Ellenkező esetben a Functions runtime meghiúsulhat igénylő műveletek végrehajtását kezelésére.Otherwise, the Functions runtime might fail trying to do operations that require manage rights. Az Azure Functions-verzió 2.x, ez a tulajdonság nem érhető el, mert a Storage SDK legújabb verziója nem támogatja a műveletek kezelésére.In Azure Functions version 2.x, this property is not available because the latest version of the Storage SDK doesn't support manage operations.

Ha helyileg fejleszt, Alkalmazásbeállítások lépnek a local.settings.json fájljában.When you're developing locally, app settings go into the local.settings.json file.

Kimenet – használatOutput - usage

Az Azure Functions 1.x, a futtatókörnyezet hoz létre az üzenetsor még nem létezik, és beállította accessRights való manage.In Azure Functions 1.x, the runtime creates the queue if it doesn't exist and you have set accessRights to manage. A Functions verzió 2.x, az üzenetsor vagy témakör már léteznie kell; Ha megad egy üzenetsorba vagy témakörbe, amely nem létezik, a függvény sikertelen lesz.In Functions version 2.x, the queue or topic must already exist; if you specify a queue or topic that doesn't exist, the function will fail.

A kimeneti kötési C# és C#-szkript, használhatja a következő paraméter típusa:In C# and C# script, you can use the following parameter types for the output binding:

  • out T paramName - T bármely JSON-szerializálható típusa lehet.out T paramName - T can be any JSON-serializable type. Ha a paraméter értéke null értékű, ha a függvény kilép, Funkciók hoz létre az üzenet Objekt s hodnotou null.If the parameter value is null when the function exits, Functions creates the message with a null object.
  • out string – Ha a paraméter értéke null értékű, ha a függvény kilép, függvények nem hoz létre egy üzenetet.out string - If the parameter value is null when the function exits, Functions does not create a message.
  • out byte[] – Ha a paraméter értéke null értékű, ha a függvény kilép, függvények nem hoz létre egy üzenetet.out byte[] - If the parameter value is null when the function exits, Functions does not create a message.
  • out BrokeredMessage-Ha a paraméter értéke null, ha a függvény kilép, a functions nem hoz létre üzenetet (az 1. x függvények esetében)out BrokeredMessage - If the parameter value is null when the function exits, Functions does not create a message (for Functions 1.x)
  • out Message– Ha a paraméter értéke null, ha a függvény kilép, a functions nem hoz létre üzenetet (a 2. x függvényhez)out Message - If the parameter value is null when the function exits, Functions does not create a message (for Functions 2.x)
  • ICollector<T> vagy IAsyncCollector<T> – több üzenetet létrehozásához.ICollector<T> or IAsyncCollector<T> - For creating multiple messages. Egy üzenet jön létre, amikor hívja a Add metódust.A message is created when you call the Add method.

A C# függvények használatakor:When working with C# functions:

  • Az aszinkron függvények visszatérési értékének IAsyncCollector vagy out paraméterének kell lennie.Async functions need a return value or IAsyncCollector instead of an out parameter.

  • A munkamenet-azonosító eléréséhez kötést kell Message kötnie egy típushoz, és a sessionId tulajdonságot kell használnia.To access the session ID, bind to a Message type and use the sessionId property.

A JavaScript, az üzenetsor vagy témakör segítségével hozzáférni context.bindings.<name from function.json>.In JavaScript, access the queue or topic by using context.bindings.<name from function.json>. Hozzárendelhet egy karakterláncot, egy bájt tömböt vagy egy JavaScript-objektumot (JSON-ként deszerializált) context.binding.<name>a következőhöz:.You can assign a string, a byte array, or a JavaScript object (deserialized into JSON) to context.binding.<name>.

Ha nemC# nyelven szeretne üzenetet küldeni egy munkamenet-kompatibilis várólistához, használja a Azure Service Bus SDK -t a beépített kimeneti kötés helyett.To send a message to a session-enabled queue in non-C# languages, use the Azure Service Bus SDK rather than the built-in output binding.

Kivételek és a visszatérési kódokExceptions and return codes

KötésBinding LeírásokReference
Service BusService Bus Service Bus-hibakódokService Bus Error Codes
Service BusService Bus Service Bus-korlátokService Bus Limits

Host.JSON-beállításokhost.json settings

Ez a szakasz ismerteti a globális konfigurációs beállításoknak a kötéshez verziójában elérhető 2.x.This section describes the global configuration settings available for this binding in version 2.x. Az alábbi példa host.json-fájl csak a verzió 2.x beállításait tartalmazza ezt a kötést.The example host.json file below contains only the version 2.x settings for this binding. További információ a globális konfigurációs beállításoknak verzióban 2.x verzióját, lásd: verzióját az Azure Functions – host.json referencia 2.x.For more information about global configuration settings in version 2.x, see host.json reference for Azure Functions version 2.x.

Megjegyzés

Az a funkciók host.json odkaz 1.x, lásd: Azure Functions – host.json referencia 1.x.For a reference of host.json in Functions 1.x, see host.json reference for Azure Functions 1.x.

{
    "version": "2.0",
    "extensions": {
        "serviceBus": {
            "prefetchCount": 100,
            "messageHandlerOptions": {
                "autoComplete": false,
                "maxConcurrentCalls": 32,
                "maxAutoRenewDuration": "00:55:00"
            }
        }
    }
}
TulajdonságProperty AlapértelmezettDefault LeírásDescription
maxAutoRenewDurationmaxAutoRenewDuration 00:05:0000:05:00 A maximális időtartamot, amelyen belül az üzenet zárolási újul meg automatikusan.The maximum duration within which the message lock will be renewed automatically.
az automatikus kiegészítésautoComplete truetrue E az eseményindító kell azonnal minősítés befejezése (automatikus kiegészítés), vagy várjon, amíg meghívásához teljes feldolgozása.Whether the trigger should immediately mark as complete (autocomplete) or wait for processing to call complete.
maxConcurrentCallsmaxConcurrentCalls 1616 Egyidejű hívás, amely az üzenet szivattyú kell kezdeményezni a visszahívás maximális számát.The maximum number of concurrent calls to the callback that the message pump should initiate. Alapértelmezés szerint a Functions futtatókörnyezete dolgozza fel a több üzenetet egy időben.By default, the Functions runtime processes multiple messages concurrently. A közvetlen egyszerre csak egy üzenetsor vagy témakör üzenetet feldolgozni a futtatókörnyezetet, állítsa maxConcurrentCalls 1-re.To direct the runtime to process only a single queue or topic message at a time, set maxConcurrentCalls to 1.
prefetchCountprefetchCount n/an/a Az alapértelmezett PrefetchCount, amely az alapul szolgáló MessageReceiver használni fog.The default PrefetchCount that will be used by the underlying MessageReceiver.

További lépésekNext steps