Satu Metode API Pengoptimalan Non-Blocking

Panduan ini memperkenalkan peluncuran eksperimental metode API OptimizeToursLongRunning dan OptimizeToursUri yang memungkinkan pengguna membuat permintaan pengoptimalan tunggal yang tidak memblokir. Dalam pengoptimalan non-pemblokiran, pengguna dengan cepat menerima proto Operasi dari metode yang dapat digunakan untuk merujuk status pengoptimalan dengan memanggil GetOperation. Lihat Operasi yang Berjalan Lama untuk mengetahui detail selengkapnya.

Metode non-blocking ini memberikan manfaat keandalan dibandingkan metode OptimizeTours blocking karena klien tidak perlu mempertahankan koneksi ke server saat pengoptimalan sedang dieksekusi. Selain itu, metode baru ini mempermudah proses pen-debug-an kegagalan dibandingkan dengan BatchOptimizeTours karena setiap pengoptimalan dikaitkan dengan satu Operasi Berjalan Lama (LRO).

Pengguna yang memilih untuk menyisipkan permintaan pengoptimalan dapat menggunakan metode OptimizeToursLongRunning, sedangkan pengguna yang memilih untuk mengupload permintaan dan membaca respons menggunakan Google Cloud Storage dapat menggunakan metode OptimizeToursUri.

OptimizeToursLongRunning

Contoh: Membuat permintaan OptimizeToursLongRunning

Sebelum membuat permintaan, ganti parameter berikut dengan nilai yang sesuai untuk lingkungan Anda:

  • Pastikan Anda telah mengonfigurasi Kredensial Default Aplikasi seperti yang dijelaskan dalam Menggunakan OAuth.
  • Tetapkan PROJECT_NUMBER_OR_ID ke nomor atau ID project Cloud Anda.

    Perintah berikut mengirim permintaan OptimizeToursLongRunning ke Route Optimization API dan menerima ID operasi yang terkait dengannya. Metode GetOperation dapat digunakan untuk mengkueri status operasi. Setelah operasi selesai, metadata juga berisi OptimizeToursResponse akhir.

    curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeToursLongRunning' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    --data @- <<EOM
    {
      "model": {
        "shipments": [
          {
            "pickups": [
              {
                "arrivalLocation": {
                  "latitude": 37.42506261000996,
                  "longitude": -122.09535511930135
                }
              }
            ],
            "deliveries": [
              {
                "arrivalLocation": {
                  "latitude": 37.42421503206021,
                  "longitude": -122.09526063135228
                }
              }
            ]
          }
        ],
        "vehicles": [
          {
            "travelMode": "DRIVING",
            "costPerKilometer": 1.0
          }
        ],
      }
    }
    EOM

OptimizeToursUri

Seperti BatchOptimizeTours, Anda dapat menggunakan OptimizeToursUri untuk terus menyimpan permintaan dan respons pengoptimalan Anda di Google Cloud Storage. URI Cloud Storage harus ditentukan dalam pesan permintaan OptimizeToursUri. Status Operation yang ditampilkan hanya terkait dengan OptimizeToursRequest tunggal yang dikirimkan.

Contoh: Membuat permintaan OptimizeToursUri

Sebelum membuat permintaan, ganti parameter berikut dengan nilai yang sesuai untuk lingkungan Anda:

  • Pastikan Anda telah mengonfigurasi Kredensial Default Aplikasi seperti yang dijelaskan dalam Menggunakan OAuth.
  • Tetapkan PROJECT_NUMBER_OR_ID ke nomor atau ID project Cloud Anda.

    Perintah berikut mengirim permintaan OptimizeToursUri ke Route Optimization API dan menerima ID operasi yang terkait dengannya. Gunakan metode GetOperation untuk mengkueri status operasi. Setelah operasi selesai, OptimizeToursResponse akan disimpan dari jarak jauh di jalur URI output yang diberikan dalam permintaan.

    curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeToursUri' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    --data @- <<EOM
    {
      "input": {
        "uri": "gs://bucket/path/input/object.json"
      },
      "output": {
        "uri": "gs://bucket/path/output/object.json"
      }
    }
    EOM