IoT Platform, cihazlar tarafından gönderilen verileri ApsaraMQ for RocketMQ konularına iletir. Ardından ApsaraMQ for RocketMQ bu verileri iş sunucularınıza yönlendirir. Bu konuda veri iletiminin nasıl yapılacağı açıklanmaktadır.
Ön koşullar
Bir Alibaba Cloud hesabınızın olması gerekir.
-
IoT Platform hizmeti etkinleştirilmiş olmalıdır.
-
ApsaraMQ for RocketMQ hizmeti etkinleştirilmiş olmalıdır.
ApsaraMQ for RocketMQ henüz etkinleştirilmemişse ApsaraMQ for RocketMQ ürün sayfasına giderek hizmeti etkinleştirin.
-
Bir geliştirme ortamı hazırlamanız gerekir. Bu örnekte aşağıdaki bileşenlerden oluşan bir Java geliştirme ortamı kullanılmaktadır.
İşletim sistemi: 64 bit Windows 10
JDK sürümü: JDK 8
Entegre geliştirme ortamı (IDE): IntelliJ IDEA Community Edition
Arka plan bilgileri
Veri iletim süreci

Avantajlar:
Cihazları Message Queuing Telemetry Transport (MQTT) üzerinden IoT Platform'a bağladığınızda veri iletim bağlantıları, verilerin değiştirilmesini önlemek için Transport Layer Security (TLS) şifrelemesi kullanır. MQTT hakkında daha fazla bilgi için bkz. MQTT protokolü özellikleri.
ApsaraMQ for RocketMQ, iş sunucularınızdaki trafik dalgalanmalarını ve eşzamanlı iş yüklerini azaltmak amacıyla bir mesaj arabelleği olarak görev yapar.
Yordam
-
IoT Platform konsolunda oturum açın ve bir ürün ile bir cihaz oluşturun.
-
Overview sayfasında All environment seçeneğine tıklayın. All environment sekmesinde yönetmek istediğiniz örneği bulun ve örnek kimliğine veya örnek adına tıklayın.
Bu örnekte China (Shanghai) bölgesi seçilmiştir.
-
Sol gezinme bölmesinde seçimini yapın. Products sayfasında Create Product seçeneğine tıklayın. Create Product sayfasında parametreleri yapılandırın ve OK seçeneğine tıklayın.
Bu örnekte Product Name parametresi MQ_test olarak, Node Type parametresi ise Directly Connected Device olarak ayarlanmıştır. Diğer parametreler için varsayılan değerler kullanılmıştır.
-
View Product Details seçeneğine tıklayın. Ürün ayrıntıları sayfasında seçimini yapın ve cihaz verilerini göndermek için kullanılan bir konu kategorisi oluşturmak üzere Edit Topic Category seçeneğine tıklayın.
Bu örnekte /{YourProductKey}/${YourDeviceName}/user/data adlı bir konu kategorisi oluşturulmuştur.
-
Sol gezinme bölmesinde seçimini yapın. Devices sayfasında MQ_test ürünü için bir cihaz oluşturmak amacıyla Add Device seçeneğine tıklayın.
Bu örnekte MQdevice adlı bir cihaz oluşturulmuştur.
-
-
ApsaraMQ for RocketMQ konsolunda bir konu ve bir tüketici oluşturun.
ApsaraMQ for RocketMQ konsolunda oturum açın.
-
Sol gezinme bölmesinde Instances seçeneğine tıklayın. Instances sayfasında Create Instance seçeneğine tıklayın. Bu örnekte Instance Version parametresi V4.0 ve Instance Type parametresi Standard Edition Instance olarak ayarlanmış bir örnek China (Shanghai) bölgesinde oluşturulmuştur.
Daha fazla bilgi için bkz. Örnek oluşturma.
ÖnemliApsaraMQ for RocketMQ örneği, IoT Platform örneğiyle aynı bölgede bulunmalıdır.
Veri akışlarını yalnızca ApsaraMQ for RocketMQ V4.x örneğinin konularına iletebilirsiniz.
Instances sayfasında veritabanı oluşturmak istediğiniz örneği bulun ve örnek adına tıklayın.
-
Instance Details sayfasında Create Group seçeneğine tıklayın. Create Group panelinde parametreleri yapılandırın ve OK seçeneğine tıklayın.
Delivery Order değerini Concurrent Delivery olarak ve Description değerini
IoT device message subscriptionolarak ayarlayın. -
Create Topic seçeneğine tıklayın. Create Topic panelinde Message Type parametresini Normal Message olarak ayarlayın.
Aşağıdaki parametreleri yapılandırın:
Message Type: Normal Message
Description: IoT cihazının kurumsal sunucuya raporlama verileri
-
ApsaraMQ for RocketMQ konsolunda bir tüketici oluşturun ve tüketicinin durumunu görüntüleyin. Tüketicinin Online durumunda olduğundan ve gruptaki tüketicilerin aboneliklerinin tutarlı olduğundan emin olun.
Bu örnekte mesaj göndermek ve almak için bir TCP SDK kullanılmaktadır. TCP SDK'yı edinme ve kullanma hakkında daha fazla bilgi için bkz. TCP istemci SDK'ları ile normal mesajları gönderme ve abone olma.
Örnek Java kodu:
NotAccessKey ID ve AccessKey secret görüntüleme hakkında daha fazla bilgi için bkz. AccessKey çifti oluşturma.
ApsaraMQ for RocketMQ kullanımı hakkında daha fazla bilgi için bkz. ApsaraMQ for RocketMQ belgeleri.
import com.aliyun.openservices.ons.api.Action; import com.aliyun.openservices.ons.api.ConsumeContext; import com.aliyun.openservices.ons.api.Consumer; import com.aliyun.openservices.ons.api.Message; import com.aliyun.openservices.ons.api.MessageListener; import com.aliyun.openservices.ons.api.ONSFactory; import com.aliyun.openservices.ons.api.PropertyKeyConst; import java.util.Properties; public class ConsumerTest { public static void main(String[] args) { Properties properties = new Properties(); // The ID of the group that you created in the ApsaraMQ for RocketMQ console. properties.put(PropertyKeyConst.GROUP_ID, "XXX"); // The AccessKey ID that you created in the Alibaba Cloud Management Console for identity authentication. properties.put(PropertyKeyConst.AccessKey, "${AccessKey}"); // The AccessKey secret that you created in the Alibaba Cloud Management Console for identity authentication. properties.put(PropertyKeyConst.SecretKey, "${SecretKey}"); // The TCP endpoint. To obtain the TCP endpoint, go to the Basic Information section of the instance details page in the IoT Platform console. properties.put(PropertyKeyConst.NAMESRV_ADDR, "XXX"); // Clustering subscription. This is the default mode. // properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.CLUSTERING); // Broadcasting subscription. // properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.BROADCASTING); Consumer consumer = ONSFactory.createConsumer(properties); consumer.subscribe("iotx_test_mq", "", new MessageListener() { // Subscribe to multiple tags. public Action consume(Message message, ConsumeContext context) { System.out.println("Receive: " + message); return Action.CommitMessage; } }); consumer.start(); System.out.println("Consumer Started"); } }
-
IoT Platform konsolunda, örnek için bir veri iletimi kuralı yapılandırarak cihaz verilerini ApsaraMQ for RocketMQ'ya iletin.
Sol gezinme bölmesinde seçimini yapın.
-
Data Forwarding sayfasında Create Rule seçeneğine tıklayın.
ÖnemliEn son sürümün Data Forwarding sayfası görünürse sayfanın sağ üst köşesindeki Back to Previous Version seçeneğine tıklayın. Önceki sürümün Data Forwarding sayfası göründüğünde Create Rule seçeneğine tıklayın.
Create Data Forwarding Rule iletişim kutusunda Rule Name parametresini MQ forwarding olarak ve Data Type parametresini JSON olarak ayarlayın. Ardından OK seçeneğine tıklayın.
-
Kural ayrıntıları sayfasında Write SQL Statement seçeneğine tıklayın. Write SQL Statement iletişim kutusunda aşağıdaki şekilde gösterildiği gibi parametreleri yapılandırın ve OK seçeneğine tıklayın.

-
Add Operation seçeneğine tıklayın. Add Operation iletişim kutusunda verileri iletmek istediğiniz hedefi belirtin ve OK seçeneğine tıklayın.
İletişim kutusunda aşağıdaki parametreleri yapılandırın:
Data Destination Name:
ToRocketMQSelect Operation: Send data to ApsaraMQ for RocketMQ
Region: China (Shanghai)
Instance:
IoT-forward-data-test
-
Data Forwarding sayfasına gidin. MQ forwarding kuralını bulun ve Actions sütunundaki Start seçeneğine tıklayın.
Kural etkinleştirildikten sonra IoT Platform, cihaz verilerini ApsaraMQ for RocketMQ konusuna iletir.
-
Bir Java SDK kullanarak bir cihazı simüle edin, cihazı IoT Platform'a bağlayın ve ardından cihazı kullanarak veri gönderin.
Java SDK Demo paketini indirin ve paketi sıkıştırılmış dosyadan çıkarın.
IntelliJ IDEA'yı başlatın ve demo paketinden JavaLinkKitDemo adlı örnek projeyi içe aktarın.
device_id.jsondosyasında MQdevice cihazının aşağıdaki cihaz sertifika bilgilerini belirtin: ProductKey, DeviceName ve DeviceSecret.-
src\main\java\com.aliyun.alink.devicesdk.demo\MqttSample.javadosyasındaki MQTT konusunu, cihazın veri gönderdiği konuyla değiştirin.Bu örnekte /{YourProductKey}/${YourDeviceName}/user/data konusu kullanılmaktadır.
/** * Example of a publish operation */ public void publish() { MqttPublishRequest request = new MqttPublishRequest(); // Specify a topic based on your business scenario. request.topic = "/" + productKey + "/" + deviceName + "/user/data"; ...... ...... } -
src\main\java\com.aliyun.alink.devicesdk.demo\HelloWorld.javadosyasındaki MQTT uç noktasını cihazınızın MQTT uç noktasıyla değiştirin.Bu örnekte aşağıdaki MQTT uç noktası kullanılmaktadır. MQTT uç noktalarını elde etme hakkında daha fazla bilgi için bkz. Örneğin uç noktasını görüntüleme.
public void init(final DeviceInfoData deviceInfoData) { ...... ...... /** * Configure the parameters for MQTT initialization. */ IoTMqttClientConfig config = new IoTMqttClientConfig(); config.productKey = deviceInfoData.productKey; config.deviceName = deviceInfoData.deviceName; config.deviceSecret = deviceInfoData.deviceSecret; config.channelHost = "iot-06****.mqtt.iothub.aliyuncs.com:1883"; ...... ...... } Cihazı başlatmak için
src\main\java\com.aliyun.alink.devicesdk.demo\HelloWorld.javadosyasını çalıştırın.
IoT Platform konsolunda örneğin Instance Details sayfasına gidin ve seçimini yapın. Cihaz günlüklerini görüntüleyebilir ve cihaz verilerinin ApsaraMQ for RocketMQ'ya iletilip iletilmediğini kontrol edebilirsiniz.

-
ApsaraMQ for RocketMQ konsolundaki verileri görüntüleyin.
-
ApsaraMQ for RocketMQ konusuna abone olmak için yerel sunucunuzdaki kodu çalıştırın.

-
ApsaraMQ for RocketMQ konsolundaki instance details sayfasına gidin ve Message Query seçeneğine tıklayın. Message Query sayfasında konuya veya mesaj kimliğine göre mesajlarda arama yapın.
ApsaraMQ for RocketMQ'ya iletilen mesajın ayrıntılarını görüntülemek ve mesajı indirmek için Details seçeneğine tıklayabilirsiniz.
Örnek mesaj:
{"deviceName":"MQdevice"}
-