Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede işleri zamanlamak ve yayınlamak için arka uç uygulama kodunun nasıl oluşturulacağı gösterilmektedir.
Azure IoT Hub'u kullanarak, bu işlemler için milyonlarca cihazı güncelleyen işleri planlayın ve takip edin.
- Doğrudan yöntemleri çağır
- Güncellenmiş cihaz eşleri
Bir görev bu eylemlerden birini üstlenir ve yürütmeyi, bir cihaz ikizi sorgusu ile tanımlanan cihaz kümasına karşı izler. Örneğin, bir arka uç uygulama, cihazları yeniden başlatan doğrudan bir yöntemi işletmek için bir görevi kullanabilir. Cihaz ikizi sorgusu ile cihaz setini belirler ve işi gelecekte çalıştırılmak üzere zamanlarsınız. İş, her bir cihazın yeniden başlatma doğrudan yöntemini alıp uyguladıkça ilerlemeyi izler.
Bu özelliklerin her biri hakkında daha fazla bilgi edinmek için bkz:
- Aygıt ikizi ve özellikleri: Aygıt ikizleriyle çalışmaya başlayın ve IoT Hub'da aygıt ikizlerini anlayın ve kullanın
- Doğrudan yöntemler: IoT Hub developer guide - direct methods
Note
Bu makalede açıklanan özellikler yalnızca IoT Hub'un standart katmanında mevcuttur. Temel ve standart/ücretsiz IoT Hub katmanları hakkında daha fazla bilgi için bkz. çözüm için doğru IoT Hub katmanını ve boyutunu seçme.
Note
Bu makale, bu makale içerisinden referans verilen Azure IoT SDK'ları örneklerini tamamlamak amacıyla hazırlanmıştır. Cihaz ve arka uç uygulamaları oluşturmak için SDK araçlarını kullanabilirsiniz.
Prerequisites
Bir IoT merkezi
Kayıtlı bir cihaz
Uygulamanız MQTT protokolünü kullanıyorsa, güvenlik duvarınızda 8883 numaralı portun açık olduğundan emin olun. MQTT protokolü 8883 numaralı bağlantı noktası üzerinden iletişim kurar. Bu port bazı kurumsal ve eğitim ağ ortamlarında engellenebilir. Daha fazla bilgi ve bu sorunun etrafından dolaşmanın yolları için Connecting to IoT Hub (MQTT) bölümüne bakın.
- Visual Studio gerektirir
Overview
Bu makale, bir veya daha fazla cihazda doğrudan bir yöntemi çağırmak ya da cihaz ikizi güncellemesi gerçekleştirmek için programlanabilir bir iş planlamak amacıyla arka uç hizmet uygulama kodunu oluşturmak üzere Azure IoT SDK for .NET'i nasıl kullanacağınızı anlatmaktadır.
Servis NuGet paketini ekle
Backend hizmet uygulamaları, Microsoft.Azure.Devices NuGet paketini gerektirir.
Kullanım ifadeleri
Aşağıdaki 'using' ifadelerini ekleyin.
using Microsoft.Azure.Devices;
using Microsoft.Azure.Devices.Shared;
using System.Threading;
using System.Threading.Tasks;
IoT merkezi ile bağlantı kur
Aşağıdaki yöntemleri kullanarak bir arka uç hizmetini IoT Hub'a bağlayabilirsiniz:
- Paylaşılan erişim politikası
- Microsoft Entra
Önemli
Bu makale, paylaşılan bir erişim imzası kullanarak bir hizmete bağlanmak için adımları içermektedir. Bu kimlik doğrulama yöntemi, test ve değerlendirme için uygun bir seçenektir, ancak bir hizmete Microsoft Entra ID veya yönetilen kimlikler ile kimlik doğrulaması daha güvenli bir yaklaşımdır. Daha fazla bilgi edinmek için bkz . IoT çözümleri > için en iyi güvenlik uygulamaları Bulut güvenliği.
Ortak erişim politikası kullanarak bağlanın
Bir arka uç uygulamayı bir cihaza CreateFromConnectionString kullanarak bağlayın.
Bu makale, doğrudan bir yöntemi çağırmak için bir işi zamanlayabilen, bir cihazın ikizini güncelleyebilmek için bir işi zamanlayabilen ve bir veya daha fazla cihaz için bir işin ilerlemesini izleyebilen arka uç kodunu açıklamaktadır. Bu işlemleri gerçekleştirmek için hizmetinizin kayıt defteri okuma ve kayıt defteri yazma izinlerine sahip olması gerekir. Varsayılan olarak, her IoT hub'ı bu izinleri veren registryReadWrite adlı bir paylaşılan erişim ilkesiyle oluşturulur.
Daha fazla bilgi için IoT Hub'a paylaşılan erişim imzalarıyla erişimi kontrol etme başlıklı belgede paylaşılan erişim politikalarına göz atın.
static JobClient jobClient;
static string connectionString = "{Shared access policy connection string}";
jobClient = JobClient.CreateFromConnectionString(connString);
Microsoft Entra'yı kullanarak bağlanın
Microsoft Entra kullanan bir arka uç uygulamasının IoT Hub'a bağlanmadan önce başarıyla kimlik doğrulaması yapması ve bir güvenlik belirteci kimlik bilgisi alması gerekir. Bu belirteç bir IoT Hub bağlantı yöntemine aktarılır. IoT Hub için Microsoft Entra'nın kurulum ve kullanımı hakkında genel bilgi için Microsoft Entra ID kullanarak IoT Hub erişimini kontrol etme bölümüne bakın.
Microsoft Entra uygulamasını yapılandırma
Bir Microsoft Entra uygulaması kurmanız gerekmektedir ve bu uygulama tercih ettiğiniz kimlik doğrulama bilgilerine göre yapılandırılmış olmalıdır. Uygulama, istemci sırrı (client secret) gibi, arka uç uygulama tarafından kimlik doğrulama amacıyla kullanılan parametreler içerir. Mevcut uygulama kimlik doğrulama yapılandırmaları şunlardır:
- İstemci gizliliği
- Certificate
- Birleşik kimlik bilgisi
Microsoft Entra uygulamaları, yürütülen işlemlere bağlı olarak belirli rol izinleri gerektirebilir. Örneğin, bir IoT Hub cihazı ve modül ikizlerine okuma ve yazma erişimi sağlamak için IoT Hub Twin Contributor gereklidir. Daha fazla bilgi için, Azure RBAC rol ataması kullanarak IoT Hub erişimini yönetme konusuna bakınız.
Daha fazla bilgi için bir Microsoft Entra uygulamasını yapılandırmaya ilişkin Hızlı Başlangıç: Microsoft kimlik platformu ile bir uygulama kaydetme bölümüne bakın.
Varsayılan Azure Kimlik Bilgileri kullanarak kimlik doğrulayın
Bir arka uç uygulamasını kimlik doğrulama için Microsoft Entra kullanmanın en kolay yolu DefaultAzureCredential kullanmaktır, ancak üretim ortamında belirli bir TokenCredential veya kısıtlanmış bir ChainedTokenCredential dahil olmak üzere farklı bir yöntem kullanılması önerilir. Basitlik için, bu bölüm kimlik doğrulamayı DefaultAzureCredential ve İstemci sırrı kullanarak açıklar. Daha fazla bilgi için, DefaultAzureCredential kullanımının avantajları ve dezavantajları hakkında DefaultAzureCredential için kullanım rehberine bakın.
DefaultAzureCredential farklı kimlik doğrulama mekanizmalarını destekler ve çalıştığı ortamı temel alarak uygun kimlik bilgisi türünü belirler. Çalışır bir kimlik bilgisi bulana kadar birden çok kimlik bilgisi türünü sırayla kullanmayı dener.
Microsoft Entra, bu NuGet paketlerine ve ilgili using ifadelerine ihtiyaç duyar.
- Azure.Core
- Azure.Identity
using Azure.Core;
using Azure.Identity;
Bu örnekte, Microsoft Entra uygulama kaydı için istemci sırrı, istemci kimliği ve kiracı kimliği ortam değişkenlerine eklenir. Bu ortam değişkenleri, uygulamanın kimliğini doğrulamak için DefaultAzureCredential tarafından kullanılır. Başarılı bir Microsoft Entra kimlik doğrulaması sonucunda, IoT Hub bağlantı yöntemine iletilen bir güvenlik belirteci kimlik bilgisi elde edilir.
string clientSecretValue = "xxxxxxxxxxxxxxx";
string clientID = "xxxxxxxxxxxxxx";
string tenantID = "xxxxxxxxxxxxx";
Environment.SetEnvironmentVariable("AZURE_CLIENT_SECRET", clientSecretValue);
Environment.SetEnvironmentVariable("AZURE_CLIENT_ID", clientID);
Environment.SetEnvironmentVariable("AZURE_TENANT_ID", tenantID);
TokenCredential tokenCredential = new DefaultAzureCredential();
Sonuçta elde edilen TokenCredential, Microsoft Entra kimlik bilgilerini kabul eden herhangi bir SDK istemcisi için IoT Hub'a bağlanma yöntemine aktarılabilir.
Bu örnekte, TokenCredential bir ServiceClient.Create bağlantı nesnesi oluşturmak için 'ye iletilir.
string hostname = "xxxxxxxxxx.azure-devices.net";
using var serviceClient = ServiceClient.Create(hostname, tokenCredential, TransportType.Amqp);
Bu örnekte, bir TokenCredential nesnesi oluşturmak için RegistryManager.Create, 'e aktarılır.
string hostname = "xxxxxxxxxx.azure-devices.net";
registryManager = RegistryManager.Create(hostname, tokenCredential);
Kod örneği
Microsoft Entra servis kimlik doğrulamasının çalışan bir örneği için, Rol tabanlı kimlik doğrulama örneği'ne bakın.
Doğrudan yöntem görevini zamanla
ScheduleDeviceMethodAsync kullanarak bir veya birden fazla cihazda doğrudan bir yöntem çalıştırmak için bir iş planlayabilirsiniz.
CloudToDeviceMethod nesnesini kullanarak doğrudan yöntem adını ve cihaz bağlantı zaman aşımı değerlerini belirtin.
Örneğin:
// The CloudToDeviceMethod record specifies the direct method name and device connection time-out
CloudToDeviceMethod directMethod =
new CloudToDeviceMethod("LockDoor", TimeSpan.FromSeconds(5),
TimeSpan.FromSeconds(5));
Bu örnek, "Device-1" adlı bir cihazda "LockDoor" adlı doğrudan bir yöntem için bir iş planlamaktadır. Planlanmış işe dahil edilen cihazlar, ikinci parametre olarak bir sorgu koşulu içerir. Sorgu koşulları hakkında daha fazla bilgi için cihaz ve modül ikizleri, işler ve mesaj yönlendirme için IoT Hub sorgu dili sayfasına bakın.
string methodJobId = Guid.NewGuid().ToString(); // a unique job ID
static string deviceId = "Device-1"; // In this example, there is only one device affected
JobResponse result = await jobClient.ScheduleDeviceMethodAsync(methodJobId,
$"DeviceId IN ['{deviceId}']",
directMethod,
DateTime.UtcNow,
(long)TimeSpan.FromMinutes(2).TotalSeconds);
Cihaz ikizi güncelleme işini zamanlayın
ScheduleTwinUpdateAsync kullanarak yeni bir cihaz ikizi istenen özellikleri ve etiketleri güncelleştirme işini bir veya daha fazla cihazda çalışacak şekilde zamanlayın.
Öncelikle, güncelleme için bir cihaz Twin nesnesi oluşturun ve doldurun. Örneğin:
static string deviceId = "Device-1";
Twin twin = new Twin(deviceId);
twin.Tags = new TwinCollection();
twin.Tags["Building"] = "43";
twin.Tags["Floor"] = "3";
twin.ETag = "*";
twin.Properties.Desired["LocationUpdate"] = DateTime.UtcNow;
Sonra, ScheduleTwinUpdateAsync'yi ara. Güncellenecek cihazları ikinci parametrede bir sorgu olarak belirtin. Sorgu koşulları hakkında daha fazla bilgi için cihaz ve modül ikizleri, işler ve mesaj yönlendirme için IoT Hub sorgu dili sayfasına bakın.
string twinJobId = Guid.NewGuid().ToString();
JobResponse createJobResponse = jobClient.ScheduleTwinUpdateAsync(
twinJobId,
$"DeviceId IN ['{deviceId}']",
twin,
DateTime.UtcNow,
(long)TimeSpan.FromMinutes(2).TotalSeconds).Result;
Bir işi izlemek
Belirli bir iş kimliği için iş durumunu izlemek amacıyla GetJobAsync kullanın.
Bu örnek, bir iş kimliği için iş durumunu periyodik olarak kontrol eder ve iş durumu tamamlandığında veya başarısız olduğunda durur. Örneğin:
JobResponse result;
do
{
result = await jobClient.GetJobAsync(jobId);
Console.WriteLine("Job Status : " + result.Status.ToString());
Thread.Sleep(2000);
} while ((result.Status != JobStatus.Completed) && (result.Status != JobStatus.Failed));
SDK zamanlama işi örnekleri
Azure IoT SDK for .NET, iş zamanlama görevlerini yöneten hizmet uygulamalarının çalışma örneklerini sağlar. Daha fazla bilgi için bakınız:
- Java SE Geliştirme Seti 8 gerektirir. JDK 8 indirmelerine gitmek için Uzun vadeli destek altında Java 8'yi seçtiğinizden emin olun.
Overview
Bu makalede, bir veya daha fazla cihazda doğrudan bir yöntemin çağrılmasını veya cihaz ikizinin güncellenmesini sağlamak için iş planlamak üzere arka uç hizmet uygulama kodunun oluşturulması amacıyla Java için Azure IoT SDK'sının nasıl kullanılacağı açıklanmaktadır.
Hizmet import ifadeleri
JobClient sınıfı, hizmetlerin işleri zamanlamak için kullanabileceği yöntemleri içerir.
Java için Azure IoT SDK'sına erişmek için aşağıdaki hizmet içeri aktarma deyimlerini kullanın.
import com.microsoft.azure.sdk.iot.service.devicetwin.DeviceTwinDevice;
import com.microsoft.azure.sdk.iot.service.devicetwin.Pair;
import com.microsoft.azure.sdk.iot.service.devicetwin.Query;
import com.microsoft.azure.sdk.iot.service.devicetwin.SqlQuery;
import com.microsoft.azure.sdk.iot.service.jobs.JobClient;
import com.microsoft.azure.sdk.iot.service.jobs.JobResult;
import com.microsoft.azure.sdk.iot.service.jobs.JobStatus;
import java.util.Date;
import java.time.Instant;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
IoT Hub'a bağlanma
Aşağıdaki yöntemleri kullanarak bir arka uç hizmetini IoT Hub'a bağlayabilirsiniz:
- Paylaşılan erişim politikası
- Microsoft Entra
Önemli
Bu makale, paylaşılan bir erişim imzası kullanarak bir hizmete bağlanmak için adımları içermektedir. Bu kimlik doğrulama yöntemi, test ve değerlendirme için uygun bir seçenektir, ancak bir hizmete Microsoft Entra ID veya yönetilen kimlikler ile kimlik doğrulaması daha güvenli bir yaklaşımdır. Daha fazla bilgi edinmek için bkz . IoT çözümleri > için en iyi güvenlik uygulamaları Bulut güvenliği.
Ortak erişim politikası kullanarak bağlanın
IoT hub'ına bağlantı oluşturmak için jobclient oluşturucu kullanın. Bu nesne, JobClient IoT hub'ınız ile iletişimi işler.
Bu makale, doğrudan bir yöntemi çağırmak için bir işi zamanlayabilen, bir cihazın ikizini güncelleyebilmek için bir işi zamanlayabilen ve bir veya daha fazla cihaz için bir işin ilerlemesini izleyebilen arka uç kodunu açıklamaktadır. Bu işlemleri gerçekleştirmek için hizmetinizin kayıt defteri okuma ve kayıt defteri yazma izinlerine sahip olması gerekir. Varsayılan olarak, her IoT hub'ı bu izinleri veren registryReadWrite adlı bir paylaşılan erişim ilkesiyle oluşturulur.
Daha fazla bilgi için IoT Hub'a paylaşılan erişim imzalarıyla erişimi kontrol etme başlıklı belgede paylaşılan erişim politikalarına göz atın.
Örneğin:
public static final String iotHubConnectionString = "{Shared access policy connection string}";
JobClient jobClient = new JobClient(iotHubConnectionString);
Microsoft Entra'yı kullanarak bağlanın
Microsoft Entra kullanan bir arka uç uygulamasının IoT Hub'a bağlanmadan önce başarıyla kimlik doğrulaması yapması ve bir güvenlik belirteci kimlik bilgisi alması gerekir. Bu belirteç bir IoT Hub bağlantı yöntemine aktarılır. IoT Hub için Microsoft Entra'nın kurulum ve kullanımı hakkında genel bilgi için Microsoft Entra ID kullanarak IoT Hub erişimini kontrol etme bölümüne bakın.
Java SDK kimlik doğrulaması hakkında genel bir bakış için Java ve Azure Identity ile Azure kimlik doğrulaması'na bakın.
Basitlik için bu bölüm, istemci gizliliği kullanarak kimlik doğrulamayı tanımlamaya odaklanıyor.
Microsoft Entra uygulamasını yapılandırma
Bir Microsoft Entra uygulaması kurmanız gerekmektedir ve bu uygulama tercih ettiğiniz kimlik doğrulama bilgilerine göre yapılandırılmış olmalıdır. Uygulama, istemci sırrı (client secret) gibi, arka uç uygulama tarafından kimlik doğrulama amacıyla kullanılan parametreler içerir. Mevcut uygulama kimlik doğrulama yapılandırmaları şunlardır:
- İstemci gizliliği
- Certificate
- Birleşik kimlik bilgisi
Microsoft Entra uygulamaları, yürütülen işlemlere bağlı olarak belirli rol izinleri gerektirebilir. Örneğin, bir IoT Hub cihazı ve modül ikizlerine okuma ve yazma erişimi sağlamak için IoT Hub Twin Contributor gereklidir. Daha fazla bilgi için, Azure RBAC rol ataması kullanarak IoT Hub erişimini yönetme konusuna bakınız.
Daha fazla bilgi için bir Microsoft Entra uygulamasını yapılandırmaya ilişkin Hızlı Başlangıç: Microsoft kimlik platformu ile bir uygulama kaydetme bölümüne bakın.
Varsayılan Azure Kimlik Bilgileri kullanarak kimlik doğrulayın
Bir arka uç uygulamasını kimlik doğrulama için Microsoft Entra kullanmanın en kolay yolu DefaultAzureCredential kullanmaktır, ancak üretim ortamında belirli bir TokenCredential veya kısıtlanmış bir ChainedTokenCredential dahil olmak üzere farklı bir yöntem kullanılması önerilir.
Azure Identity istemci kitaplığı için Java'da DefaultAzureCredential kullanmanın avantajları ve dezavantajları hakkında daha fazla bilgi için bkz. Azure Kimliği istemci kitaplığındaki kimlik bilgisi zincirleri.
DefaultAzureCredential, farklı kimlik doğrulama mekanizmalarını destekler ve çalıştığı ortama bağlı olarak uygun kimlik bilgisi türünü belirler. Çalışır bir kimlik bilgisi bulana kadar birden çok kimlik bilgisi türünü sırayla kullanmayı dener.
Microsoft Entra uygulama kimlik bilgilerini DefaultAzureCredentialBuilder kullanarak doğrulayabilirsiniz. Bağlantı parametrelerini, örneğin ortam değişkenleri olarak müşteri gizliliği kiracı kimliği (tenantID), müşteri kimliği (clientID) ve müşteri gizli değerlerini kaydedin.
TokenCredential oluşturulduktan sonra, 'credentials' parametresi olarak ServiceClient veya başka bir oluşturucuya iletin.
Bu örnekte, DefaultAzureCredentialBuilderDefaultAzureCredential içinde açıklanan listeden bir bağlantıyı kimlik doğrulamaya çalışıyor. Başarılı bir Microsoft Entra kimlik doğrulamasının sonucu, ServiceClient gibi bir yapılandırıcıya iletilen bir güvenlik belirteci kimlik bilgisi olur.
TokenCredential defaultAzureCredential = new DefaultAzureCredentialBuilder().build();
ClientSecretCredentialBuilder kullanarak kimlik doğrulaması yapın
ClientSecretCredentialBuilder kullanarak bir kimlik bilgisi oluşturmak için istemci gizli anahtar bilgisini kullanabilirsiniz. Başarılı olursa, bu yöntem 'kimlik bilgisi' parametresi olarak ServiceClient veya başka bir yapıcıya aktarılabilen bir TokenCredential döndürür.
Bu örnekte, Microsoft Entra uygulama kaydı istemci sırrı, istemci kimliği ve kiracı kimliği değerleri, ortam değişkenlerine eklendi. Bu ortam değişkenleri, kimlik bilgilerini oluşturmak için ClientSecretCredentialBuilder tarafından kullanılır.
string clientSecretValue = System.getenv("AZURE_CLIENT_SECRET");
string clientID = System.getenv("AZURE_CLIENT_ID");
string tenantID = System.getenv("AZURE_TENANT_ID");
TokenCredential credential =
new ClientSecretCredentialBuilder()
.tenantId(tenantID)
.clientId(clientID)
.clientSecret(clientSecretValue)
.build();
Diğer kimlik doğrulama sınıfları
Java SDK'sı, Microsoft Entra ile arka uç uygulamasının kimliğini doğrulayan şu sınıfları da içerir:
- AuthorizationCodeCredential
- AzureCliCredential
- AzureDeveloperCliCredential
- AzurePipelinesCredential
- ChainedTokenCredential
- ClientAssertionCredential
- ClientCertificateCredential
- DeviceCodeCredential
- EnvironmentCredential
- InteractiveBrowserCredential
- ManagedIdentityCredential
- OnBehalfOfCredential
Kod örnekleri
Microsoft Entra hizmeti kimlik doğrulama için çalışma örnekleri için Role based authentication sample'a bakın.
Doğrudan yöntem güncelleme işini zamanla
Bir veya birden fazla cihazda doğrudan bir yöntem çalıştırmak için scheduleDeviceMethod kullanın.
Bu örnek yöntem, "Cihaz-1" adlı bir cihazda "kapı kilitleme" adlı doğrudan yöntem için bir iş zamanılandırır.
// Schedule a job now to call the lockDoor direct method
// against a single device. Response and connection
// timeouts are set to 5 seconds.
String deviceId = "Device-1";
String jobId = "DMCMD" + UUID.randomUUID(); //Job ID must be unique
// How long the job is permitted to run without
// completing its work on the set of devices
private static final long maxExecutionTimeInSeconds = 30;
System.out.println("Schedule job " + jobId + " for device " + deviceId);
try {
JobResult jobResult = jobClient.scheduleDeviceMethod(jobId,
"deviceId='" + deviceId + "'",
"lockDoor",
5L, 5L, null,
new Date(),
maxExecutionTimeInSeconds);
} catch (Exception e) {
System.out.println("Exception scheduling direct method job: " + jobId);
System.out.println(e.getMessage());
}
Cihaz ikizi güncelleme işini zamanlayın
Bir veya birden çok cihazda cihaz ikizi güncelleştirmesini çalıştırmak üzere bir iş zamanlamak için scheduleUpdateTwin komutunu kullanın.
Öncelikle, cihaz ikiz güncellemesi için bir DeviceTwinDevice kaydı hazırlayın. Örneğin:
String deviceId = "Device-1";
//Create a device twin desired properties update object
DeviceTwinDevice twin = new DeviceTwinDevice(deviceId);
Set<Pair> desiredProperties = new HashSet<Pair>();
desiredProperties.add(new Pair("Building", 43));
desiredProperties.add(new Pair("Floor", 3));
twin.setDesiredProperties(desiredProperties);
// Optimistic concurrency control
twin.setETag("*");
Ardından scheduleUpdateTwin öğesini arayın ve güncelleme işini planlayın. Örneğin:
String jobId = "DPCMD" + UUID.randomUUID(); //Unique job ID
// How long the job is permitted to run without
// completing its work on the set of devices
private static final long maxExecutionTimeInSeconds = 30;
// Schedule the update twin job to run now for a single device
System.out.println("Schedule job " + jobId + " for device " + deviceId);
try {
JobResult jobResult = jobClient.scheduleUpdateTwin(jobId,
"deviceId='" + deviceId + "'",
twin,
new Date(),
maxExecutionTimeInSeconds);
} catch (Exception e) {
System.out.println("Exception scheduling desired properties job: " + jobId);
System.out.println(e.getMessage());
}
Bir işi izlemek
Belirli bir iş kimliğine göre iş bilgilerini getirmek için getJob kullanın.
getJob, çalıştırma durumu da dahil olmak üzere iş bilgilerini kontrol etmek için kullanabileceğiniz yöntemler ve özellikler içeren bir JobResult nesnesi döndürür.
Örneğin:
try {
JobResult jobResult = jobClient.getJob(jobId);
if(jobResult == null)
{
System.out.println("No JobResult for: " + jobId);
return;
}
// Check the job result until it's completed
while(jobResult.getJobStatus() != JobStatus.completed)
{
Thread.sleep(100);
jobResult = jobClient.getJob(jobId);
System.out.println("Status " + jobResult.getJobStatus() + " for job " + jobId);
}
System.out.println("Final status " + jobResult.getJobStatus() + " for job " + jobId);
} catch (Exception e) {
System.out.println("Exception monitoring job: " + jobId);
System.out.println(e.getMessage());
return;
}
İş durumunu sorgulama
Bir veya daha fazla işin durumunu sorgulamak için queryDeviceJob'i kullanın.
Örneğin:
private static void queryDeviceJobs(JobClient jobClient, String start) throws Exception {
System.out.println("\nQuery device jobs since " + start);
// Create a jobs query using the time the jobs started
Query deviceJobQuery = jobClient
.queryDeviceJob(SqlQuery.createSqlQuery("*", SqlQuery.FromType.JOBS, "devices.jobs.startTimeUtc > '" + start + "'", null).getQuery());
// Iterate over the list of jobs and print the details
while (jobClient.hasNextJob(deviceJobQuery)) {
System.out.println(jobClient.getNextJob(deviceJobQuery));
}
}
SDK zamanlama iş örneği
Azure IoT SDK for Java, iş zamanlama görevlerini yöneten bir hizmet uygulamasının çalışan bir örneğini sağlar. Daha fazla bilgi için İş İstemcisi Örneği'ne bakın.
- Python SDK - Python sürümü 3.7 veya üstü önerilir. Yapılandırmanızın gerektirdiği şekilde 32-bit veya 64-bit kurulumunu kullandığınızdan emin olun. Kurulum sırasında sorulduğunda, Python'u platforma özel çevre değişkenine eklediğinizden emin olun.
Overview
Bu makalede, bir veya daha fazla cihazda doğrudan bir yöntemi çağırmak veya cihaz ikizinin istenen özelliklerini güncellemek için işleri zamanlamak amacıyla arka uç hizmet uygulama kodu oluşturmak üzere Python için Azure IoT SDK'nın nasıl kullanılacağı açıklanmaktadır.
Paket yükle
Arka uç hizmet uygulamaları oluşturmak için azure-iot-hub kitaplığı yüklenmelidir.
pip install azure-iot-hub
deyimlerini içeri aktarma
IoTHubJobManager sınıfı, hizmetten işleri zamanlamak için bir arka uç uygulaması oluşturmak için gereken tüm yöntemleri kullanıma sunar.
Aşağıdaki import ifadelerini ekleyin.
import os
import sys
import datetime
import time
import threading
import uuid
import msrest
from azure.iot.hub import IoTHubJobManager
from azure.iot.hub.models import JobProperties, JobRequest, Twin, TwinProperties, CloudToDeviceMethod
IoT merkezi ile bağlantı kur
Aşağıdaki yöntemleri kullanarak bir arka uç hizmetini IoT Hub'a bağlayabilirsiniz:
- Paylaşılan erişim politikası
- Microsoft Entra
Önemli
Bu makale, paylaşılan bir erişim imzası kullanarak bir hizmete bağlanmak için adımları içermektedir. Bu kimlik doğrulama yöntemi, test ve değerlendirme için uygun bir seçenektir, ancak bir hizmete Microsoft Entra ID veya yönetilen kimlikler ile kimlik doğrulaması daha güvenli bir yaklaşımdır. Daha fazla bilgi edinmek için bkz . IoT çözümleri > için en iyi güvenlik uygulamaları Bulut güvenliği.
Ortak erişim politikası kullanarak bağlanın
from_connection_string kullanarak IoT hub'ına bağlanın.
Bu makale, doğrudan bir yöntemi çağırmak için bir işi zamanlayabilen, bir cihazın ikizini güncelleyebilmek için bir işi zamanlayabilen ve bir veya daha fazla cihaz için bir işin ilerlemesini izleyebilen arka uç kodunu açıklamaktadır. Bu işlemleri gerçekleştirmek için hizmetinizin kayıt defteri okuma ve kayıt defteri yazma izinlerine sahip olması gerekir. Varsayılan olarak, her IoT hub'ı bu izinleri veren registryReadWrite adlı bir paylaşılan erişim ilkesiyle oluşturulur.
Daha fazla bilgi için IoT Hub'a paylaşılan erişim imzalarıyla erişimi kontrol etme başlıklı belgede paylaşılan erişim politikalarına göz atın.
Örneğin:
IoTHubConnectionString = "{Shared access policy connection string}"
iothub_job_manager = IoTHubJobManager.from_connection_string(IoTHubConnectionString)
Microsoft Entra'yı kullanarak bağlanın
Microsoft Entra kullanan bir arka uç uygulamasının IoT Hub'a bağlanmadan önce başarıyla kimlik doğrulaması yapması ve bir güvenlik belirteci kimlik bilgisi alması gerekir. Bu belirteç bir IoT Hub bağlantı yöntemine aktarılır. IoT Hub için Microsoft Entra'nın kurulum ve kullanımı hakkında genel bilgi için Microsoft Entra ID kullanarak IoT Hub erişimini kontrol etme bölümüne bakın.
Microsoft Entra uygulamasını yapılandırma
Bir Microsoft Entra uygulaması kurmanız gerekmektedir ve bu uygulama tercih ettiğiniz kimlik doğrulama bilgilerine göre yapılandırılmış olmalıdır. Uygulama, istemci sırrı (client secret) gibi, arka uç uygulama tarafından kimlik doğrulama amacıyla kullanılan parametreler içerir. Mevcut uygulama kimlik doğrulama yapılandırmaları şunlardır:
- İstemci gizliliği
- Certificate
- Birleşik kimlik bilgisi
Microsoft Entra uygulamaları, yürütülen işlemlere bağlı olarak belirli rol izinleri gerektirebilir. Örneğin, bir IoT Hub cihazı ve modül ikizlerine okuma ve yazma erişimi sağlamak için IoT Hub Twin Contributor gereklidir. Daha fazla bilgi için, Azure RBAC rol ataması kullanarak IoT Hub erişimini yönetme konusuna bakınız.
Daha fazla bilgi için bir Microsoft Entra uygulamasını yapılandırmaya ilişkin Hızlı Başlangıç: Microsoft kimlik platformu ile bir uygulama kaydetme bölümüne bakın.
Varsayılan Azure Kimlik Bilgileri kullanarak kimlik doğrulayın
Bir arka uç uygulamasını kimlik doğrulama için Microsoft Entra kullanmanın en kolay yolu DefaultAzureCredential kullanmaktır, ancak üretim ortamında belirli bir TokenCredential veya kısıtlanmış bir ChainedTokenCredential dahil olmak üzere farklı bir yöntem kullanılması önerilir. Basitlik için, bu bölüm kimlik doğrulamayı DefaultAzureCredential ve İstemci sırrı kullanarak açıklar. Daha fazla bilgi için, DefaultAzureCredential kullanımının avantajları ve dezavantajları hakkında DefaultAzureCredential için kullanım rehberine bakın.
DefaultAzureCredential farklı kimlik doğrulama mekanizmalarını destekler ve çalıştığı ortamı temel alarak uygun kimlik bilgisi türünü belirler. Çalışır bir kimlik bilgisi bulana kadar birden çok kimlik bilgisi türünü sırayla kullanmayı dener.
Microsoft Entra, bu NuGet paketlerine ve ilgili using ifadelerine ihtiyaç duyar.
- Azure.Core
- Azure.Identity
using Azure.Core;
using Azure.Identity;
Bu örnekte, Microsoft Entra uygulama kaydı için istemci sırrı, istemci kimliği ve kiracı kimliği ortam değişkenlerine eklenir. Bu ortam değişkenleri, uygulamanın kimliğini doğrulamak için DefaultAzureCredential tarafından kullanılır. Başarılı bir Microsoft Entra kimlik doğrulaması sonucunda, IoT Hub bağlantı yöntemine iletilen bir güvenlik belirteci kimlik bilgisi elde edilir.
string clientSecretValue = "xxxxxxxxxxxxxxx";
string clientID = "xxxxxxxxxxxxxx";
string tenantID = "xxxxxxxxxxxxx";
Environment.SetEnvironmentVariable("AZURE_CLIENT_SECRET", clientSecretValue);
Environment.SetEnvironmentVariable("AZURE_CLIENT_ID", clientID);
Environment.SetEnvironmentVariable("AZURE_TENANT_ID", tenantID);
TokenCredential tokenCredential = new DefaultAzureCredential();
Sonuçta elde edilen TokenCredential, Microsoft Entra kimlik bilgilerini kabul eden herhangi bir SDK istemcisi için IoT Hub'a bağlanma yöntemine aktarılabilir.
Bu örnekte, TokenCredential bir ServiceClient.Create bağlantı nesnesi oluşturmak için 'ye iletilir.
string hostname = "xxxxxxxxxx.azure-devices.net";
using var serviceClient = ServiceClient.Create(hostname, tokenCredential, TransportType.Amqp);
Bu örnekte, bir TokenCredential nesnesi oluşturmak için RegistryManager.Create, 'e aktarılır.
string hostname = "xxxxxxxxxx.azure-devices.net";
registryManager = RegistryManager.Create(hostname, tokenCredential);
Kod örneği
Microsoft Entra servis kimlik doğrulamasının çalışan bir örneği için, Rol tabanlı kimlik doğrulama örneği'ne bakın.
Doğrudan yöntem işi zamanlama
Bir veya birden çok cihazda doğrudan yöntem çalıştırmak üzere yeni bir doğrudan yöntem zamanlamak için create_scheduled_job kullanın:
create_scheduled_job parametre notları:
-
job_idbenzersiz olmalıdır -
typeşunuscheduleDeviceMethodolarak ayarla - Doğrudan yöntem adını ve yükünü ayarlamak için kullanın
cloud_to_device_method - Yürütme süresini saniye cinsinden belirtmek için
max_execution_time_in_secondskullanın. -
query_conditionkullanarak doğrudan yöntem çağrısına dahil edilecek cihazları belirtin. Sorgu koşulları hakkında daha fazla bilgi için cihaz ve modül ikizleri, işler ve mesaj yönlendirme için IoT Hub sorgu dili sayfasına bakın.
Örneğin:
METHOD_NAME = "lockDoor"
METHOD_PAYLOAD = "{\"lockTime\":\"10m\"}"
job_id = uuid.uuid4()
DEVICE_ID = "Device-1"
TIMEOUT = 60
job_request = JobRequest()
job_request.job_id = job_id
job_request.type = "scheduleDeviceMethod"
job_request.start_time = datetime.datetime.utcnow().isoformat()
job_request.cloud_to_device_method = CloudToDeviceMethod(method_name=METHOD_NAME, payload=METHOD_PAYLOAD)
job_request.max_execution_time_in_seconds = TIMEOUT
job_request.query_condition = "DeviceId in ['{}']".format(device_id)
new_job_response = iothub_job_manager.create_scheduled_job(job_id, job_request)
Cihaz ikizi güncelleme işini zamanlayın
create_scheduled_job komutunu kullanarak bir veya birden fazla cihazda, cihaz ikizinin istenen özelliklerini güncellemek için yeni bir görev oluşturun.
create_scheduled_job parametre notları:
-
job_idbenzersiz olmalıdır -
typeşunuscheduleUpdateTwinolarak ayarla - Doğrudan yöntem adını ve yükünü ayarlamak için kullanın
update_twin - Yürütme süresini saniye cinsinden belirtmek için
max_execution_time_in_secondskullanın. - Bir veya birden fazla cihaz için doğrudan yöntem çağrısına sahip bir koşul belirtmek üzere
query_conditionkullanın. Sorgu koşulları hakkında daha fazla bilgi için cihaz ve modül ikizleri, işler ve mesaj yönlendirme için IoT Hub sorgu dili sayfasına bakın.
Örneğin:
UPDATE_PATCH = {"building":43,"floor":3}
job_id = uuid.uuid4()
TIMEOUT = 60
job_request = JobRequest()
job_request.job_id = job_id
job_request.type = "scheduleUpdateTwin"
job_request.start_time = datetime.datetime.utcnow().isoformat()
job_request.update_twin = Twin(etag="*", properties=TwinProperties(desired=UPDATE_PATCH))
job_request.max_execution_time_in_seconds = TIMEOUT
job_request.query_condition = "DeviceId in ['{}']".format(device_id)
new_job_response = iothub_job_manager.create_scheduled_job(job_id, job_request)
Bir işi izlemek
Belirli bir görevin ayrıntılarını bir IoT Hub üzerinde almak için get_scheduled_job'u kullanın.
Bu örnek, iş tamamlanana kadar her beş saniyede bir belirli bir iş kimliği için iş durumunu denetler.
while True:
get_job_response = iothub_job_manager.get_scheduled_job(job_request.job_id)
print_job_response("Get job response: ", get_job_response)
if get_job_response.status == "completed":
print ( "Job is completed." )
time.sleep(5)
SDK zamanlama işi örnekleri
Python için Azure IoT SDK, iş zamanlama görevlerini yöneten servis uygulamalarının çalışan örneklerini sağlar. Daha fazla bilgi için bakınız:
- Node.js sürüm 10.0.x veya üstünü gerektirir.
Overview
Bu makale, Azure IoT SDK for Node.js kullanarak bir veya daha fazla cihazda doğrudan bir yöntemi çağırmak veya cihaz ikizi güncellemesi yapmak için iş planlaması yapabilen arka uç servis uygulama kodunun nasıl oluşturulacağını açıklar.
Servis SDK paketini yükle
Geliştirme makinenize azure-iothub yüklemek için bu komutu çalıştırın:
npm install azure-iothub --save
JobClient sınıfı, arka uç uygulamasından iş zamanlamasıyla etkileşim kurmak için gereken tüm yöntemleri sunar.
IoT merkezi ile bağlantı kur
Aşağıdaki yöntemleri kullanarak bir arka uç hizmetini IoT Hub'a bağlayabilirsiniz:
- Paylaşılan erişim politikası
- Microsoft Entra
Önemli
Bu makale, paylaşılan bir erişim imzası kullanarak bir hizmete bağlanmak için adımları içermektedir. Bu kimlik doğrulama yöntemi, test ve değerlendirme için uygun bir seçenektir, ancak bir hizmete Microsoft Entra ID veya yönetilen kimlikler ile kimlik doğrulaması daha güvenli bir yaklaşımdır. Daha fazla bilgi edinmek için bkz . IoT çözümleri > için en iyi güvenlik uygulamaları Bulut güvenliği.
Ortak erişim politikası kullanarak bağlanın
IoT hub'ye bağlanmak için fromConnectionString'i kullanın.
Bu makale, doğrudan bir yöntemi çağırmak için bir işi zamanlayabilen, bir cihazın ikizini güncelleyebilmek için bir işi zamanlayabilen ve bir veya daha fazla cihaz için bir işin ilerlemesini izleyebilen arka uç kodunu açıklamaktadır. Bu işlemleri gerçekleştirmek için hizmetinizin kayıt defteri okuma ve kayıt defteri yazma izinlerine sahip olması gerekir. Varsayılan olarak, her IoT hub'ı bu izinleri veren registryReadWrite adlı bir paylaşılan erişim ilkesiyle oluşturulur.
Daha fazla bilgi için IoT Hub'a paylaşılan erişim imzalarıyla erişimi kontrol etme başlıklı belgede paylaşılan erişim politikalarına göz atın.
Örneğin:
'use strict';
var JobClient = require('azure-iothub').JobClient;
var connectionString = '{Shared access policy connection string}';
var jobClient = JobClient.fromConnectionString(connectionString);
Microsoft Entra'yı kullanarak bağlanın
Microsoft Entra kullanan bir arka uç uygulamasının IoT Hub'a bağlanmadan önce başarıyla kimlik doğrulaması yapması ve bir güvenlik belirteci kimlik bilgisi alması gerekir. Bu belirteç bir IoT Hub bağlantı yöntemine aktarılır. IoT Hub için Microsoft Entra'nın kurulum ve kullanımı hakkında genel bilgi için Microsoft Entra ID kullanarak IoT Hub erişimini kontrol etme bölümüne bakın.
Node.js SDK kimlik doğrulama hakkında genel bir bakış için bkz:
Microsoft Entra uygulamasını yapılandırma
Bir Microsoft Entra uygulaması kurmanız gerekmektedir ve bu uygulama tercih ettiğiniz kimlik doğrulama bilgilerine göre yapılandırılmış olmalıdır. Uygulama, istemci sırrı (client secret) gibi, arka uç uygulama tarafından kimlik doğrulama amacıyla kullanılan parametreler içerir. Mevcut uygulama kimlik doğrulama yapılandırmaları şunlardır:
- İstemci gizliliği
- Certificate
- Birleşik kimlik bilgisi
Microsoft Entra uygulamaları, yürütülen işlemlere bağlı olarak belirli rol izinleri gerektirebilir. Örneğin, bir IoT Hub cihazı ve modül ikizlerine okuma ve yazma erişimi sağlamak için IoT Hub Twin Contributor gereklidir. Daha fazla bilgi için, Azure RBAC rol ataması kullanarak IoT Hub erişimini yönetme konusuna bakınız.
Daha fazla bilgi için bir Microsoft Entra uygulamasını yapılandırmaya ilişkin Hızlı Başlangıç: Microsoft kimlik platformu ile bir uygulama kaydetme bölümüne bakın.
Varsayılan Azure Kimlik Bilgileri kullanarak kimlik doğrulayın
Bir arka uç uygulamasını kimlik doğrulama için Microsoft Entra kullanmanın en kolay yolu DefaultAzureCredential kullanmaktır, ancak üretim ortamında belirli bir TokenCredential veya kısıtlanmış bir ChainedTokenCredential dahil olmak üzere farklı bir yöntem kullanılması önerilir. Basitlik için, bu bölüm kimlik doğrulamayı DefaultAzureCredential ve İstemci sırrı kullanarak açıklar.
Daha fazla bilgi için, DefaultAzureCredential kullanımının avantajları ve dezavantajları hakkında, Azure Identity istemci kitaplığı JavaScript için Kimlik Bilgisi zincirleri bölümüne bakın.
DefaultAzureCredential, farklı kimlik doğrulama mekanizmalarını destekler ve çalıştığı ortama bağlı olarak uygun kimlik bilgisi türünü belirler. Çalışır bir kimlik bilgisi bulana kadar birden çok kimlik bilgisi türünü sırayla kullanmayı dener.
Microsoft Entra bu paketi gerektirir:
npm install --save @azure/identity
Örnekte, Microsoft Entra uygulama kaydı için istemci sırrı, istemci kimliği ve kiracı kimliği ortam değişkenlerine eklenmiştir. Bu ortam değişkenleri, uygulamanın kimliğini doğrulamak için DefaultAzureCredential tarafından kullanılır. Başarılı bir Microsoft Entra kimlik doğrulaması sonucunda, IoT Hub bağlantı yöntemine iletilen bir güvenlik belirteci kimlik bilgisi elde edilir.
import { DefaultAzureCredential } from "@azure/identity";
// Azure SDK clients accept the credential as a parameter
const credential = new DefaultAzureCredential();
Ortaya çıkan kimlik doğrulama belirteci, Microsoft Entra kimlik bilgilerini kabul eden herhangi bir SDK istemcisi için IoT Hub'a bağlanmak üzere fromTokenCredential'e aktarılabilir.
fromTokenCredential iki parametre gerektirir:
- Azure hizmet URL'si - Azure hizmet URL'si ön ek olmadan
{Your Entra domain URL}.azure-devices.netbiçimindehttps://olmalıdır. Örneğin,MyAzureDomain.azure-devices.net. - Azure kimlik doğrulama belirteci
Bu örnekte, Azure kimlik bilgisi DefaultAzureCredential kullanılarak alınır. Ardından, IoT Hub ile bağlantı oluşturmak için Azure etki alanı URL'si ve kimlik bilgisi Registry.fromTokenCredential'a sağlanır.
const { DefaultAzureCredential } = require("@azure/identity");
let Registry = require('azure-iothub').Registry;
// Define the client secret values
clientSecretValue = 'xxxxxxxxxxxxxxx'
clientID = 'xxxxxxxxxxxxxx'
tenantID = 'xxxxxxxxxxxxx'
// Set environment variables
process.env['AZURE_CLIENT_SECRET'] = clientSecretValue;
process.env['AZURE_CLIENT_ID'] = clientID;
process.env['AZURE_TENANT_ID'] = tenantID;
// Acquire a credential object
const credential = new DefaultAzureCredential()
// Create an instance of the IoTHub registry
hostName = 'MyAzureDomain.azure-devices.net';
let registry = Registry.fromTokenCredential(hostName,credential);
Kod örnekleri
Microsoft Entra hizmeti kimlik doğrulamasının çalışma örnekleri için bkz . Azure kimlik örnekleri.
Doğrudan yöntem işi oluştur
scheduleDeviceMethod kullanarak bir veya birden fazla cihazda doğrudan bir yöntemi çalıştırmak için bir iş zamanlayın.
İlk olarak, metod adı, yük ve yanıt zaman aşımı bilgileri ile bir doğrudan metod güncelleme değişkeni oluşturun. Örneğin:
var methodParams = {
methodName: 'lockDoor',
payload: null,
responseTimeoutInSeconds: 15 // Time-out after 15 seconds if device is unable to process method
};
Ardından scheduleDeviceMethod çağırarak doğrudan yöntem çağrısı görevi zamanlayın:
- Her işin benzersiz bir iş kimliği olmalıdır. Bu iş kimliğini, bu makalenin İşi izleme bölümünde açıklandığı gibi bir işi izlemek için kullanabilirsiniz.
- İşin hangi cihazlarda çalıştırılacağını değerlendirmek için bir
queryConditionparametresi belirleyin. Sorgu koşulları hakkında daha fazla bilgi için cihaz ve modül ikizleri, işler ve mesaj yönlendirme için IoT Hub sorgu dili sayfasına bakın. -
jobResultİş zamanlaması sonucu için geri aramayı denetleyin. İş başarıyla zamanlandıysa, bu makalenin İşi izleme bölümünde gösterildiği gibi iş durumunu izleyebilirsiniz.
Örneğin:
var methodJobId = uuid.v4();
var queryCondition = "deviceId IN ['myDeviceId']";
var startTime = new Date();
var maxExecutionTimeInSeconds = 300;
jobClient.scheduleDeviceMethod(methodJobId,
queryCondition,
methodParams,
startTime,
maxExecutionTimeInSeconds,
function(err) {
if (err) {
console.error('Could not schedule direct method job: ' + err.message);
} else {
monitorJob(methodJobId, function(err, result) {
if (err) {
console.error('Could not monitor direct method job: ' + err.message);
} else {
console.log(JSON.stringify(result, null, 2));
}
});
}
});
Cihaz ikizi güncelleme işini zamanlayın
Bir veya birden çok cihazda cihaz ikizi güncelleştirmesini çalıştırmak üzere yeni bir iş oluşturmak için scheduleTwinUpdate kullanın.
Öncelikle, bir cihaz çiftinin istenen özellik güncellemesi değişkeni oluşturun.
var twinPatch = {
etag: '*',
properties: {
desired: {
building: '43',
floor: 3
}
}
};
Ardından, aygıt ikizinin istenen özellik güncelleme görevini planlamak için scheduleTwinUpdate çağrısı yapın.
- Her işin benzersiz bir iş kimliği olmalıdır. Bu iş kimliğini, bu makalenin İşi izleme bölümünde açıklandığı gibi bir işi izlemek için kullanabilirsiniz.
- İşin hangi cihazlarda çalıştırılacağını değerlendirmek için bir
queryConditionparametresi belirleyin. Sorgu koşulları hakkında daha fazla bilgi için cihaz ve modül ikizleri, işler ve mesaj yönlendirme için IoT Hub sorgu dili sayfasına bakın. -
jobResultİş zamanlaması sonucu için geri aramayı denetleyin. İş başarıyla zamanlandıysa, bu makalenin İşi izleme bölümünde gösterildiği gibi iş durumunu izleyebilirsiniz.
Örneğin:
var twinJobId = uuid.v4();
var queryCondition = "deviceId IN ['myDeviceId']";
var startTime = new Date();
var maxExecutionTimeInSeconds = 300;
console.log('scheduling Twin Update job with id: ' + twinJobId);
jobClient.scheduleTwinUpdate(twinJobId,
queryCondition,
twinPatch,
startTime,
maxExecutionTimeInSeconds,
function(err) {
if (err) {
console.error('Could not schedule twin update job: ' + err.message);
} else {
monitorJob(twinJobId, function(err, result) {
if (err) {
console.error('Could not monitor twin update job: ' + err.message);
} else {
console.log(JSON.stringify(result, null, 2));
}
});
}
});
Bir işi izlemek
Belirli bir iş kimliği için iş durumunu izlemek amacıyla getJob kullanın.
Bu örnek işlev, belirli bir iş kimliği için iş durumunu, iş tamamlanana veya başarısız olana kadar belirli aralıklarla kontrol eder.
function monitorJob (jobId, callback) {
var jobMonitorInterval = setInterval(function() {
jobClient.getJob(jobId, function(err, result) {
if (err) {
console.error('Could not get job status: ' + err.message);
} else {
console.log('Job: ' + jobId + ' - status: ' + result.status);
if (result.status === 'completed' || result.status === 'failed' || result.status === 'cancelled') {
clearInterval(jobMonitorInterval);
callback(null, result);
}
}
});
}, 5000);
}
SDK zamanlama iş örneği
Node.js için Azure IoT SDK’si, iş planlama görevlerini yöneten bir hizmet uygulamasının çalışan bir örneğini sunar. Daha fazla bilgi için Job client E2E test bakın.