全部产品
Search
文档中心

:Bagaimana cara memecahkan masalah error "No route info" saat menghubungkan ke ApsaraMQ for RocketMQ dengan SDK?

更新时间:Dec 24, 2025

Skenario

Error "No route info" muncul saat Anda menghubungkan ke ApsaraMQ for RocketMQ menggunakan SDK.

SDK yang Berlaku

  • Commercial HTTP SDK. SDK ini hanya didukung oleh instans seri ApsaraMQ for RocketMQ 4.0. Untuk informasi selengkapnya, lihat Ikhtisar versi SDK.

  • Commercial 1.x SDK (Java, protokol Remoting). Kode berikut menyediakan koordinat dependensi contoh. Versi Commercial SDK harus 1.7.9 atau lebih baru.

    <dependency>
        <groupId>com.aliyun.openservices</groupId>
        <artifactId>ons-client</artifactId>
        <version>1.9.1.Final</version>
    </dependency>
  • Open source SDK (Java, protokol Remoting, dengan artifactId rocketmq-client). Kode berikut menyediakan koordinat dependensi contoh. Versi open source SDK harus 4.5.2 atau lebih baru. Periksa konfigurasi kode dan versi SDK Anda.

    <dependency>
        <groupId>org.apache.rocketmq</groupId>
        <artifactId>rocketmq-client</artifactId>
        <version>4.9.2</version>
    </dependency>

Rangkuman Pemecahan Masalah

Metode pemecahan masalah bervariasi tergantung pada edisi instans, protokol SDK, dan bahasa pemrograman. Ikuti petunjuk yang sesuai dengan skenario spesifik Anda.

Detail Pemecahan Masalah

HTTP protocol SDK

  1. Verifikasi bahwa endpoint dalam kode Anda sesuai dengan endpoint yang ditampilkan di Konsol untuk instans target. Jika sudah sesuai, pastikan topik telah dibuat.

  2. Periksa halaman detail instans untuk menentukan apakah namespace digunakan. Jika instans menggunakan namespace, konfigurasikan `instanceId` dalam kode produsen dan konsumen Anda. Untuk informasi selengkapnya, lihat Contoh kode. Jika instans tidak menggunakan namespace, berikan nilai null atau string kosong untuk `instanceId`.

    image

TCP Remoting protocol SDK

  1. Konfirmasi apakah resource yang melaporkan error no router info adalah TBW102 atau RMQ_SYS_TRACE_TOPIC.

    1. TBW102: Resource ini digunakan oleh open source RocketMQ untuk pembuatan topik otomatis. Di ApsaraMQ for RocketMQ, topik merupakan resource yang dikelola dan tidak dapat dibuat secara otomatis. Error TBW102 tidak memengaruhi operasi client dan dapat diabaikan.

    2. RMQ_SYS_TRACE_TOPIC: Topik ini digunakan oleh open source RocketMQ untuk melaporkan jejak pesan. Saat Anda menghubungkan ke ApsaraMQ for RocketMQ, Anda harus mengonfigurasi kompatibilitas untuk jejak berbasis cloud. Konfigurasikan open source Remoting protocol SDK (dengan artifactId rocketmq-client) sebagai berikut. Untuk informasi selengkapnya, lihat Kirim dan terima pesan normal (tiga metode).

      public static void main(String[] args) throws MQClientException {  
          DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("YOUR GROUP ID", getAclRPCHook(), new AllocateMessageQueueAveragely(), true, null);
          consumer.setNamesrvAddr("http://xxxx.mq-internet.aliyuncs.com:80");
          // Untuk menggunakan jejak pesan berbasis cloud di Alibaba Cloud, atur access channel ke CLOUD. 
          // Atur parameter ini jika Anda menggunakan fitur jejak pesan berbasis cloud. 
          // Jika Anda tidak mengaktifkan fitur ini, Anda tidak perlu mengatur parameter ini.
          consumer.setAccessChannel(AccessChannel.CLOUD);
          ......
          consumer.start();
        }
  2. Verifikasi bahwa endpoint dalam kode Anda sesuai dengan endpoint yang ditampilkan di Konsol untuk instans target. Jika sudah sesuai, pastikan topik telah dibuat.

  3. Untuk client Java dengan protokol Remoting, periksa log client untuk menemukan exception koneksi jaringan. Lokasi log adalah:

    • Jalur Open source Java SDK: /{user.home}/logs/rocketmqlogs/rocketmq_client.log

    • Jalur edisi Commercial 1.x: /{user.home}/logs/ons.log.

    Jika log menunjukkan masalah konektivitas jaringan, pastikan terlebih dahulu bahwa jaringan dapat diakses. Anda dapat menggunakan perintah ping dan telnet untuk menguji koneksi. Selain menguji endpoint, gunakan juga perintah `telnet` untuk menguji konektivitas ke alamat yang dilaporkan dalam error log.

  4. Periksa log untuk kegagalan otorisasi. Jika terjadi kegagalan otorisasi, selesaikan masalah izin terlebih dahulu, lalu periksa apakah error masih berlanjut.

  5. Verifikasi apakah Anda menggunakan framework spring-cloud-stream. Untuk informasi selengkapnya, lihat Petunjuk konfigurasi.

    • Jika instans menggunakan namespace, konfigurasikan topik dalam format instanceId%Topic.

    • Jika instans tidak menggunakan namespace, konfigurasikan hanya nama topik. Untuk menentukan apakah instans menggunakan namespace, lihat petunjuk di bagian HTTP protocol SDK.

  6. Verifikasi apakah Anda menghubungkan ke instans Serverless melalui jaringan publik.

    • Untuk menghubungkan ke instans Serverless melalui jaringan publik, Anda harus menggunakan versi SDK tertentu dan mengatur namespace.

    • Anda tidak perlu mengatur namespace jika menghubungkan ke instans Serverless melalui jaringan internal, atau jika menghubungkan ke jenis instans seri 5.0 lainnya melalui jaringan publik maupun internal.

      // Versi SDK yang didukung: rocketmq-client >= 5.2.0
      producer.setNamespaceV2("rmq-cn-xxxxxxx");
      consumer.setNamespaceV2("rmq-cn-xxxxxxx");
      // Versi SDK yang didukung: rocketmq-client-java >= 5.0.6
      StaticSessionCredentialsProvider staticSessionCredentialsProvider =
                          new StaticSessionCredentialsProvider("YOUR_USERNAME", "YOUR_PASSWORD");  // Dapatkan username dan password dari halaman Access Control di Konsol ApsaraMQ for RocketMQ.
      ClientConfiguration clientConfiguration = ClientConfiguration.newBuilder()
          .setEndpoints("rmq-cn-xxxxxxx.cn-hangzhou.rmq.aliyuncs.com:8080")
          .setNamespace("rmq-cn-xxxxxxx")
          .setCredentialProvider(staticSessionCredentialsProvider)
          .build();
      // ons >= 1.9.0.Final
      properties.setProperty(PropertyKeyConst.Namespace, "rmq-cn-xxxxxxx");