Aws-iot-device-sdk-python-v2: konfigurasikan penerbitan offline di v2

Dibuat pada 31 Jul 2020  ·  6Komentar  ·  Sumber: aws/aws-iot-device-sdk-python-v2

Apakah permintaan fitur Anda terkait dengan masalah?
Saya tidak melihat apakah offline publishing diaktifkan secara default.

Jelaskan solusi yang Anda inginkan
Seperti pada python sdk v1, akan menyenangkan untuk melihat sesuatu seperti metode configureOfflinePublishQueueing .

Jelaskan alternatif yang telah Anda pertimbangkan
Saya akan memiliki Antrian yang saya pertahankan sendiri jika pesan itu diterbitkan atau tidak.

konteks tambahan
https://github.com/aws/aws-iot-device-sdk-python/blob/master/samples/basicPubSub/basicPubSub.py#L101

feature-request

Komentar yang paling membantu

Saya juga ingin memahami ini secara lebih rinci. Seperti disebutkan di atas, pesan yang dipublikasikan saat offline masuk ke antrian dan kemudian dipublikasikan saat koneksi kembali online.

Berapa banyak pesan yang disimpan dalam antrian offline? SDK sebelumnya memungkinkan Anda untuk memilih, tak terbatas, tidak ada, atau jumlah tertentu. Saya tidak dapat menemukan dokumentasi tentang ini. Kedengarannya seperti tak terbatas tapi saya ingin tahu. SDK sebelumnya juga memungkinkan Anda untuk turun dari atas atau bawah antrian. Apakah itu mungkin sekarang?

SDK sebelumnya juga memungkinkan Anda memilih tingkat pengurasan untuk pesan yang disimpan dalam antrean. Apakah ini dapat dikonfigurasi sekarang? Jika tidak, berapa nilainya?

Semua 6 komentar

Perilaku saat ini adalah:

  • Semua pesan yang diterbitkan diantrekan sebelum dikirim, terlepas dari apakah klien sedang offline atau online.
  • Ketika klien online (atau jika sudah online) pesan dari antrian dikirim secara berurutan.
  • NAMUN: Jika klien online, dan offline, pada saat itu ia membatalkan setiap PUBLISH dan BERLANGGANAN dalam antriannya.

Kami memahami ini tidak konsisten. Pengguna mungkin menginginkan:
1) pesan selalu diantrekan hingga dapat dikirim
2) pesan gagal jika klien offline, atau offline sebelum dikirim.

Kami sangat aktif mengevaluasi perubahan ini. Saya akan menjaga masalah ini tetap terbuka dan kami akan memperbarui ketika kami telah membuat perubahan (atau memformalkan perilaku saat ini)

Jika Anda ingin mengambil kendali penuh atas takdir Anda saat ini, Anda dapat membuat antrean sendiri yang mengirimkan 1 pesan sekaligus ke klien. Jika berhasil, maka kirim berikutnya. Jika gagal, coba lagi. Ini juga memberi Anda kesempatan untuk memiliki kontrol penuh atas lamanya waktu pesan dapat diantrekan, jumlah pesan yang akan diantrekan, dll.

Jika Anda ingin mengambil kendali penuh atas takdir Anda saat ini, Anda dapat membuat antrean sendiri yang mengirimkan 1 pesan sekaligus ke klien. Jika berhasil, maka kirim berikutnya. Jika gagal, coba lagi. Ini juga memberi Anda kesempatan untuk memiliki kontrol penuh atas lamanya waktu pesan dapat diantrekan, jumlah pesan yang akan diantrekan, dll.

Hai @graebm. Bagaimana Anda melakukannya? Jika perangkat saya memublikasikan pesan, tetapi sedang offline, menurut saya pesan tersebut akan tetap berada dalam antrean tertentu? Apakah ada cara untuk mengakses antrean ini dan menghapus pesan tertentu darinya jika belum dipublikasikan?

Terima kasih

@samvandamme Anda dapat mengatur kualitas layanan (qos) paling banyak sekali (0).
qos=mqtt.QoS.AT_MOST_ONCE
Pada perangkat yang sama, berlangganan topik yang Anda publikasikan. Kemudian untuk memastikan pesan terkirim, Anda menyimpan daftar pesan yang telah Anda publikasikan. Hapus hanya jika Anda telah menerima kembali pesan tentang topik tersebut.

Perilaku saat ini adalah:

  • Semua pesan yang diterbitkan diantrekan sebelum dikirim, terlepas dari apakah klien sedang offline atau online.
  • Ketika klien online (atau jika sudah online) pesan dari antrian dikirim secara berurutan.
  • NAMUN: Jika klien online, dan offline, pada saat itu ia membatalkan setiap PUBLISH dan BERLANGGANAN dalam antriannya.

Kami memahami ini tidak konsisten. Pengguna mungkin menginginkan:

  1. pesan selalu diantrekan sampai bisa dikirim
  2. pesan gagal jika klien offline, atau offline sebelum dikirim.

Kami sangat aktif mengevaluasi perubahan ini. Saya akan menjaga masalah ini tetap terbuka dan kami akan memperbarui ketika kami telah membuat perubahan (atau memformalkan perilaku saat ini)

Jika Anda ingin mengambil kendali penuh atas takdir Anda saat ini, Anda dapat membuat antrean sendiri yang mengirimkan 1 pesan sekaligus ke klien. Jika berhasil, maka kirim berikutnya. Jika gagal, coba lagi. Ini juga memberi Anda kesempatan untuk memiliki kontrol penuh atas lamanya waktu pesan dapat diantrekan, jumlah pesan yang akan diantrekan, dll.

Jadi apa pendekatan yang disarankan untuk menangani perangkat yang offline selama beberapa periode waktu?

Dengan asumsi saya memiliki perangkat yang mengirim pesan setiap 5 detik, perangkat sedang online, pesan mencapai AWS IoT Core. Kemudian, perangkat kehilangan koneksi selama 10 menit dan kemudian online kembali. Apa yang terjadi dengan semua pesan yang coba dipublikasikan selama periode offline 10 menit? Apakah mereka dipublikasikan segera setelah perangkat online kembali atau hilang selamanya?

Beberapa pesan pertama akan hilang sementara SDK tidak menyadari bahwa itu tidak lagi terputus. Semua pesan berikutnya akan disimpan dalam antrian dan dikirim saat koneksi dipulihkan.

Saat menguji ini, saya kehilangan 5 pesan pertama saat menggunakan pubsub, yang mengirim pesan setiap detik. Jadi Anda hanya akan kehilangan satu pesan di sebagian besar waktu.

Saya juga ingin memahami ini secara lebih rinci. Seperti disebutkan di atas, pesan yang dipublikasikan saat offline masuk ke antrian dan kemudian dipublikasikan saat koneksi kembali online.

Berapa banyak pesan yang disimpan dalam antrian offline? SDK sebelumnya memungkinkan Anda untuk memilih, tak terbatas, tidak ada, atau jumlah tertentu. Saya tidak dapat menemukan dokumentasi tentang ini. Kedengarannya seperti tak terbatas tapi saya ingin tahu. SDK sebelumnya juga memungkinkan Anda untuk turun dari atas atau bawah antrian. Apakah itu mungkin sekarang?

SDK sebelumnya juga memungkinkan Anda memilih tingkat pengurasan untuk pesan yang disimpan dalam antrean. Apakah ini dapat dikonfigurasi sekarang? Jika tidak, berapa nilainya?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

banuprathap picture banuprathap  ·  10Komentar

satay99 picture satay99  ·  6Komentar

mkozjak picture mkozjak  ·  8Komentar

mkozjak picture mkozjak  ·  17Komentar

Sanrro10 picture Sanrro10  ·  16Komentar