Jika Anda menggunakan grup konsumen untuk mengonsumsi data log, Anda tidak perlu mempertimbangkan faktor-faktor seperti implementasi Layanan Log Sederhana, penyeimbangan beban di antara konsumen, atau failover yang mungkin terjadi. Fokuskan pada logika bisnis selama konsumsi data log. Topik ini menjelaskan cara membuat, memodifikasi, menanyakan, dan menghapus grup konsumen serta menyediakan contoh kode.
Prasyarat
Pengguna Resource Access Management (RAM) telah dibuat, dan izin yang diperlukan telah diberikan kepada pengguna RAM. Untuk informasi lebih lanjut, lihat Buat Pengguna RAM dan Berikan Izin kepada Pengguna RAM.
Variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah dikonfigurasi. Untuk informasi lebih lanjut, lihat Konfigurasikan Variabel Lingkungan di Linux, macOS, dan Windows.
PentingPasangan AccessKey dari akun Alibaba Cloud memiliki izin untuk semua Operasi API. Kami merekomendasikan agar Anda menggunakan pasangan AccessKey dari pengguna RAM untuk memanggil Operasi API atau melakukan pemeliharaan rutin O&M.
Kami merekomendasikan agar Anda tidak menyimpan ID AccessKey atau Rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor, dan keamanan semua sumber daya dalam akun Anda mungkin terganggu.
Simple Log Service SDK untuk Java telah diinstal. Untuk informasi lebih lanjut, lihat Instal Simple Log Service SDK untuk Java.
Log telah ditulis ke penyimpanan log, dan pengindeksan diaktifkan untuk penyimpanan log tersebut. Untuk informasi lebih lanjut, lihat Contoh Kode yang Digunakan untuk Membuat Penyimpanan Log dan Buat Indeks.
Catatan penggunaan
Dalam contoh ini, Titik akhir publik Layanan Log Sederhana untuk wilayah China (Hangzhou) digunakan, yaitu https://cn-hangzhou.log.aliyuncs.com. Jika Anda ingin mengakses Layanan Log Sederhana dengan menggunakan layanan Alibaba Cloud lainnya yang berada di wilayah yang sama dengan proyek Anda, Anda dapat menggunakan Titik akhir internal Layanan Log Sederhana, yaitu https://cn-hangzhou-intranet.log.aliyuncs.com. Untuk informasi lebih lanjut tentang wilayah dan titik akhir yang didukung oleh Layanan Log Sederhana, lihat Titik Akhir.
Contoh kode yang digunakan untuk membuat grup konsumen
Contoh kode berikut menunjukkan cara membuat grup konsumen bernama ali-test-consumergroup:
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.ConsumerGroup;
import com.aliyun.openservices.log.exception.LogException;
public class CreateConsumerGroup {
public static void main(String[] args) throws LogException {
// Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan.
String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// Nama proyek.
String projectName = "ali-test-project";
// Nama penyimpanan log.
String logstoreName = "ali-test-logstore";
// Titik akhir Layanan Log Sederhana. Dalam contoh ini, titik akhir Layanan Log Sederhana untuk wilayah China (Hangzhou) digunakan. Ganti nilai parameter dengan titik akhir sebenarnya.
String host = "https://cn-hangzhou.log.aliyuncs.com";
// Buat klien Layanan Log Sederhana.
Client client = new Client(host, accessId, accessKey);
try {
// Nama grup konsumen.
String consumerGroupName = "ali-test-consumergroup2";
System.out.println("siap untuk membuat consumergroup");
ConsumerGroup consumerGroup = new ConsumerGroup(consumerGroupName, 300, true);
client.CreateConsumerGroup(projectName, logstoreName, consumerGroup);
System.out.println(String.format("buat consumergroup %s berhasil", consumerGroupName));
} catch (LogException e) {
System.out.println("LogException e :" + e.toString());
System.out.println("kode kesalahan :" + e.GetErrorCode());
System.out.println("pesan kesalahan :" + e.GetErrorMessage());
throw e;
}
}
}Hasil yang Diharapkan:
siap untuk membuat consumergroup
buat consumergroup ali-test-consumergroup berhasilContoh kode yang digunakan untuk memodifikasi grup konsumen
Contoh kode berikut menunjukkan cara memodifikasi grup konsumen ali-test-consumergroup:
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.exception.LogException;
public class UpdateConsumerGroup {
public static void main(String[] args) throws LogException {
// Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan.
String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// Nama proyek.
String projectName = "ali-test-project";
// Nama penyimpanan log.
String logstoreName = "ali-test-logstore";
// Titik akhir Layanan Log Sederhana. Dalam contoh ini, titik akhir Layanan Log Sederhana untuk wilayah China (Hangzhou) digunakan. Ganti nilai parameter dengan titik akhir sebenarnya.
String host = "https://cn-hangzhou.log.aliyuncs.com";
// Buat klien Layanan Log Sederhana.
Client client = new Client(host, accessId, accessKey);
try {
String consumerGroupName = "ali-test-consumergroup";
System.out.println("siap untuk memperbarui consumergroup");
// Ubah periode timeout grup konsumen menjadi 350 detik.
client.UpdateConsumerGroup(projectName, logstoreName, consumerGroupName, false, 350);
System.out.println(String.format("memperbarui consumergroup %s berhasil", consumerGroupName));
} catch (LogException e) {
System.out.println("LogException e :" + e.toString());
System.out.println("kode kesalahan :" + e.GetErrorCode());
System.out.println("pesan kesalahan :" + e.GetErrorMessage());
throw e;
}
}
}Hasil yang Diharapkan:
siap untuk memperbarui consumergroup
memperbarui consumergroup ali-test-consumergroup berhasilContoh kode yang digunakan untuk menanyakan semua grup konsumen
Contoh kode berikut menunjukkan cara menanyakan semua grup konsumen dari penyimpanan log tertentu:
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.ConsumerGroup;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.response.ListConsumerGroupResponse;
public class ListConsumerGroup {
public static void main(String[] args) throws LogException {
// Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan.
String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// Nama proyek.
String projectName = "ali-test-project";
// Nama penyimpanan log.
String logstoreName = "ali-test-logstore";
// Titik akhir Layanan Log Sederhana. Dalam contoh ini, titik akhir Layanan Log Sederhana untuk wilayah China (Hangzhou) digunakan. Ganti nilai parameter dengan titik akhir sebenarnya.
String host = "https://cn-hangzhou.log.aliyuncs.com";
// Buat klien Layanan Log Sederhana.
Client client = new Client(host, accessId, accessKey);
try {
System.out.println("siap untuk mencantumkan consumergroup");
// Tanyakan semua grup konsumen dari penyimpanan log.
ListConsumerGroupResponse response = client.ListConsumerGroup(projectName,logstoreName);
for(ConsumerGroup consumerGroup : response.GetConsumerGroups()){
System.out.println("Nama Konsumen adalah : " + consumerGroup.getConsumerGroupName());
}
System.out.println(String.format("daftar consumergroup dari %s berhasil",projectName));
} catch (LogException e) {
System.out.println("LogException e :" + e.toString());
System.out.println("kode kesalahan :" + e.GetErrorCode());
System.out.println("pesan kesalahan :" + e.GetErrorMessage());
throw e;
}
}
}Hasil yang Diharapkan:
siap untuk mencantumkan consumergroup
Nama Konsumen adalah : ali-test-consumergroup2
Nama Konsumen adalah : ali-test-consumergroup
daftar consumergroup dari ali-test-project berhasilContoh kode yang digunakan untuk menghapus grup konsumen
Contoh kode berikut menunjukkan cara menghapus grup konsumen di proyek tertentu:
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.exception.LogException;
public class DeleteConsumerGroup {
public static void main(String[] args) throws LogException {
// Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan.
String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// Nama proyek.
String projectName = "ali-test-project";
// Nama penyimpanan log.
String logstoreName = "ali-test-logstore";
// Titik akhir Layanan Log Sederhana. Dalam contoh ini, titik akhir Layanan Log Sederhana untuk wilayah China (Hangzhou) digunakan. Ganti nilai parameter dengan titik akhir sebenarnya.
String host = "https://cn-hangzhou.log.aliyuncs.com";
// Buat klien Layanan Log Sederhana.
Client client = new Client(host, accessId, accessKey);
try {
String consumerGroupName = "ali-test-consumergroup";
System.out.println("siap untuk menghapus consumergroup");
// Hapus grup konsumen.
client.DeleteConsumerGroup(projectName,logstoreName,consumerGroupName);
System.out.println(String.format("hapus consumergroup %s berhasil",consumerGroupName));
} catch (LogException e) {
System.out.println("LogException e :" + e.toString());
System.out.println("kode kesalahan :" + e.GetErrorCode());
System.out.println("pesan kesalahan :" + e.GetErrorMessage());
throw e;
}
}
}Hasil yang Diharapkan:
siap untuk menghapus consumergroup
hapus consumergroup ali-test-consumergroup berhasilContoh kode yang digunakan untuk mendapatkan checkpoint grup konsumen
Contoh kode berikut menunjukkan cara mendapatkan checkpoint grup konsumen tertentu:
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.response.GetCheckPointResponse;
public class GetCheckPoint {
public static void main(String[] args) throws LogException {
// Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan.
String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// Nama proyek.
String projectName = "ali-test-project";
// Nama penyimpanan log.
String logstoreName = "ali-test-logstore";
// Titik akhir Layanan Log Sederhana. Dalam contoh ini, titik akhir Layanan Log Sederhana untuk wilayah China (Hangzhou) digunakan. Ganti nilai parameter dengan titik akhir sebenarnya.
String host = "https://cn-hangzhou.log.aliyuncs.com";
// Buat klien Layanan Log Sederhana.
Client client = new Client(host, accessId, accessKey);
try {
String consumerGroupName = "consumerGroupX";
System.out.println("siap untuk mendapatkan checkpoint consumergroup");
// Dapatkan checkpoint grup konsumen untuk shard.
GetCheckPointResponse response1 = client.getCheckpoint(projectName,logstoreName,consumerGroupName,0);
GetCheckPointResponse response2 = client.getCheckpoint(projectName,logstoreName,consumerGroupName,1);
System.out.println("Checkpoint Shard 0 adalah : " + response1.getCheckpoint());
System.out.println("Checkpoint Shard 1 adalah : " + response2.getCheckpoint());
System.out.println(String.format("dapatkan checkpoint consumergroup %s berhasil",consumerGroupName));
} catch (LogException e) {
System.out.println("LogException e :" + e.toString());
System.out.println("kode kesalahan :" + e.GetErrorCode());
System.out.println("pesan kesalahan :" + e.GetErrorMessage());
throw e;
}
}
}Hasil yang Diharapkan:
siap untuk mendapatkan checkpoint consumergroup
Checkpoint Shard 0 adalah : ConsumerGroupShardCheckPoint [shard=0, checkPoint=MTY2NzgxMDc0Nzk5MDk5MzAyMg==, updateTime=1668750821709044, consumer=consumer_1]
Checkpoint Shard 1 adalah : ConsumerGroupShardCheckPoint [shard=1, checkPoint=MTY2NzgxMDc0Nzk5MTk0NTU0NQ==, updateTime=1668750828790425, consumer=consumer_1]
dapatkan checkpoint consumergroup consumerGroupX berhasilContoh kode yang digunakan untuk memperbarui checkpoint grup konsumen
Contoh kode berikut menunjukkan cara memperbarui checkpoint grup konsumen tertentu:
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.ConsumerGroup;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.response.ListConsumerGroupResponse;
public class ConsumerGroupUpdateCheckpoint {
public static void main(String[] args) throws LogException {
// Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan.
String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// Nama proyek.
String projectName = "ali-test-project";
// Nama penyimpanan log.
String logstoreName = "ali-test-logstore";
// Titik akhir Layanan Log Sederhana. Dalam contoh ini, titik akhir Layanan Log Sederhana untuk wilayah China (Hangzhou) digunakan. Ganti nilai parameter dengan titik akhir sebenarnya.
String host = "https://cn-hangzhou.log.aliyuncs.com";
// Buat klien Layanan Log Sederhana.
Client client = new Client(host, accessId, accessKey);
try {
String consumerGroupName = "consumerGroupX";
System.out.println("siap untuk memperbarui checkpoint");
// Tanyakan semua grup konsumen dari penyimpanan log.
ListConsumerGroupResponse response = client.ListConsumerGroup(projectName, logstoreName);
for(ConsumerGroup consumerGroup : response.GetConsumerGroups()){
System.out.println("Nama Konsumen adalah : " + consumerGroup.getConsumerGroupName());
System.out.println("Urutan Konsumen adalah : " + consumerGroup.isInOrder());
}
// Perbarui checkpoint Shard 0. Anda dapat memanggil operasi GetCursor untuk menanyakan cursor berdasarkan titik waktu tertentu.
client.UpdateCheckPoint(projectName, logstoreName, consumerGroupName, 0, "MTY2NzgxMDc0Nzk5MTAwNjQ3Mg==");
System.out.println(String.format("memperbarui checkpoint %s berhasil", consumerGroupName));
} catch (LogException e) {
System.out.println("LogException e :" + e.toString());
System.out.println("kode kesalahan :" + e.GetErrorCode());
System.out.println("pesan kesalahan :" + e.GetErrorMessage());
throw e;
}
}
}Hasil yang Diharapkan:
siap untuk memperbarui checkpoint
Nama Konsumen adalah : consumerGroupX
Urutan Konsumen adalah : false
Nama Konsumen adalah : ali-test-consumergroup2
Urutan Konsumen adalah : true
Nama Konsumen adalah : ali-test-consumergroup
Urutan Konsumen adalah : false
memperbarui checkpoint consumergroup adalah:consumerGroupX
memperbarui checkpoint consumerGroupX berhasilReferensi
Jika respons yang dikembalikan oleh Layanan Log Sederhana berisi informasi kesalahan setelah Anda memanggil operasi API, panggilan gagal. Anda dapat menangani kesalahan berdasarkan kode kesalahan yang dikembalikan saat panggilan API gagal. Untuk informasi lebih lanjut, lihat Kode Kesalahan.
Layanan Log Sederhana juga kompatibel dengan SDK Alibaba Cloud. Untuk informasi lebih lanjut, lihat Simple Log Service_SDK Center_Alibaba Cloud OpenAPI Explorer.
Layanan Log Sederhana menyediakan Antarmuka baris perintah (CLI) untuk memenuhi persyaratan konfigurasi otomatis dalam Layanan Log Sederhana. Untuk informasi lebih lanjut, lihat Ikhtisar CLI Layanan Log Sederhana.
Untuk informasi lebih lanjut tentang operasi API terkait grup konsumen, lihat topik berikut:
Untuk contoh kode lebih lanjut, lihat Alibaba Cloud Simple Log Service SDK untuk Java di GitHub.