Topik ini menyediakan catatan rilis, panduan penggunaan, dan contoh kode untuk SDK for Go.
Penggunaan
-
Unduh dan ekstrak versi terbaru SDK for Go, lalu buka direktori root
aliyun-mns-go-sdk. -
Buka direktori
example. Pada filequeue_example.goatautopic_example.go, ganti placeholder endpoint dengan endpoint instans Anda. Selanjutnya, atur variabel lingkunganALIBABA_CLOUD_ACCESS_KEY_IDdanALIBABA_CLOUD_ACCESS_KEY_SECRET.Anda dapat menemukan endpoint tersebut di bagian Endpoint pada halaman Queue Details atau Topic Details di konsol. Endpoint instans terdapat di bagian Endpoint pada halaman Queue Details di konsol Simple Message Queue, yang mencantumkan baik endpoint publik maupun internal.
Contoh kode
Model Antrian
Contoh ini membuat antrian, mengirim pesan, menerima dan menghapus pesan, lalu menghapus antrian tersebut.
package main
import (
"fmt"
"log"
"net/http"
_ "net/http/pprof"
"time"
"github.com/aliyun/aliyun-mns-go-sdk"
"github.com/gogap/logs"
)
func main() {
go func() {
log.Println(http.ListenAndServe("localhost:8080", nil))
}()
// Ganti dengan endpoint Anda sendiri.
endpoint := "http://xxx.mns.cn-hangzhou.aliyuncs.com"
client := ali_mns.NewClient(endpoint)
msg := ali_mns.MessageSendRequest{
MessageBody: "hello <\"aliyun-mns-go-sdk\">",
DelaySeconds: 0,
Priority: 8}
queueManager := ali_mns.NewMNSQueueManager(client)
queueName := "test-queue"
err := queueManager.CreateQueue(queueName, 0, 65536, 345600, 30, 0, 3)
time.Sleep(time.Duration(2) * time.Second)
if err != nil && !ali_mns.ERR_MNS_QUEUE_ALREADY_EXIST_AND_HAVE_SAME_ATTR.IsEqual(err) {
fmt.Println(err)
return
}
queue := ali_mns.NewMNSQueue(queueName, client)
for i := 1; i < 10000; i++ {
ret, err := queue.SendMessage(msg)
go func() {
fmt.Println(queue.QPSMonitor().QPS())
}()
if err != nil {
fmt.Println(err)
} else {
logs.Pretty("response: ", ret)
}
endChan := make(chan int)
respChan := make(chan ali_mns.MessageReceiveResponse)
errChan := make(chan error)
go func() {
select {
case resp := <-respChan:
{
logs.Pretty("response: ", resp)
logs.Debug("change the visibility: ", resp.ReceiptHandle)
if ret, e := queue.ChangeMessageVisibility(resp.ReceiptHandle, 5); e != nil {
fmt.Println(e)
} else {
logs.Pretty("visibility changed", ret)
logs.Debug("delete it now: ", ret.ReceiptHandle)
if e := queue.DeleteMessage(ret.ReceiptHandle); e != nil {
fmt.Println(e)
}
endChan <- 1
}
}
case err := <-errChan:
{
fmt.Println(err)
endChan <- 1
}
}
}()
queue.ReceiveMessage(respChan, errChan, 30)
<-endChan
}
}
Model Topik
Contoh ini membuat antrian dan topik, berlangganan ke topik tersebut, lalu menerbitkan pesan.
package main
import (
"fmt"
"time"
"github.com/aliyun/aliyun-mns-go-sdk"
"github.com/gogap/logs"
)
func main() {
// Ganti dengan endpoint Anda sendiri.
endpoint := "http://xxx.mns.cn-hangzhou.aliyuncs.com"
queueName := "test-queue"
topicName := "test-topic"
queueSubName := "test-sub-queue"
httpSubName := "test-sub-http"
client := ali_mns.NewClient(endpoint)
// 1. buat antrian untuk menerima pesan yang didorong
queueManager := ali_mns.NewMNSQueueManager(client)
err := queueManager.CreateSimpleQueue(queueName)
if err != nil && !ali_mns.ERR_MNS_QUEUE_ALREADY_EXIST_AND_HAVE_SAME_ATTR.IsEqual(err) {
fmt.Println(err)
return
}
// 2. buat topik
topicManager := ali_mns.NewMNSTopicManager(client)
// topicManager.DeleteTopic("testTopic")
err = topicManager.CreateSimpleTopic(topicName)
if err != nil && !ali_mns.ERR_MNS_TOPIC_ALREADY_EXIST_AND_HAVE_SAME_ATTR.IsEqual(err) {
fmt.Println(err)
return
}
topic := ali_mns.NewMNSTopic(topicName, client)
// 3. berlangganan ke topik, endpoint-nya adalah antrian
queueSub := ali_mns.MessageSubsribeRequest{
Endpoint: topic.GenerateQueueEndpoint(queueName),
NotifyContentFormat: ali_mns.SIMPLIFIED,
}
// 4. berlangganan ke topik, endpoint-nya adalah HTTP(S)
httpSub := ali_mns.MessageSubsribeRequest{
Endpoint: "http://www.baidu.com",
NotifyContentFormat: ali_mns.SIMPLIFIED,
}
err = topic.Subscribe(queueSubName, queueSub)
if err != nil && !ali_mns.ERR_MNS_SUBSCRIPTION_ALREADY_EXIST_AND_HAVE_SAME_ATTR.IsEqual(err) {
fmt.Println(err)
return
}
err = topic.Subscribe(httpSubName, httpSub)
if err != nil && !ali_mns.ERR_MNS_SUBSCRIPTION_ALREADY_EXIST_AND_HAVE_SAME_ATTR.IsEqual(err) {
fmt.Println(err)
return
}
/*
sub = ali_mns.MessageSubsribeRequest{
Endpoint: topic.GenerateMailEndpoint("a@b.com"),
NotifyContentFormat: ali_mns.SIMPLIFIED,
}
err = topic.Subscribe("SubscriptionNameB", sub)
if (err != nil && !ali_mns.ERR_MNS_SUBSCRIPTION_ALREADY_EXIST_AND_HAVE_SAME_ATTR.IsEqual(err)) {
fmt.Println(err)
return
}
*/
time.Sleep(time.Duration(2) * time.Second)
// 5. sekarang terbitkan pesan
msg := ali_mns.MessagePublishRequest{
MessageBody: "hello topic <\"aliyun-mns-go-sdk\">",
MessageAttributes: &ali_mns.MessageAttributes{
MailAttributes: &ali_mns.MailAttributes{
Subject: "AAA Chinese characters",
AccountName: "BBB",
},
},
}
_, err = topic.PublishMessage(msg)
if err != nil {
fmt.Println(err)
return
}
// 6. terima pesan dari antrian
queue := ali_mns.NewMNSQueue(queueName, client)
endChan := make(chan int)
respChan := make(chan ali_mns.MessageReceiveResponse)
errChan := make(chan error)
go func() {
select {
case resp := <-respChan:
{
logs.Pretty("response: ", resp)
fmt.Println("change the visibility: ", resp.ReceiptHandle)
if ret, e := queue.ChangeMessageVisibility(resp.ReceiptHandle, 5); e != nil {
fmt.Println(e)
} else {
logs.Pretty("visibility changed", ret)
fmt.Println("delete it now: ", ret.ReceiptHandle)
if e := queue.DeleteMessage(ret.ReceiptHandle); e != nil {
fmt.Println(e)
}
endChan <- 1
}
}
case err := <-errChan:
{
fmt.Println(err)
endChan <- 1
}
}
}()
queue.ReceiveMessage(respChan, errChan, 30)
<-endChan
}
Catatan Rilis
Versi 1.0.11
|
Tanggal rilis |
Deskripsi |
Unduh |
|
2025-03-20 |
Mengembalikan dependensi |
Versi 1.0.10
|
Tanggal rilis |
Deskripsi |
Unduh |
|
2025-03-17 |
Memperbaiki masalah gagalnya pemeriksaan wilayah saat membuat sumber daya endpoint yang diakhiri dengan |
Versi 1.0.9
|
Tanggal rilis |
Deskripsi |
Unduh |
|
2025-03-11 |
Memperbaiki issues#26, yaitu kesalahan akibat komponen |
Versi 1.0.8
|
Tanggal rilis |
Deskripsi |
Unduh |
|
2025-02-06 |
Menambahkan dukungan untuk mengonfigurasi parameter |
Versi 1.0.7
|
Tanggal rilis |
Deskripsi |
Unduh |
|
2025-01-23 |
|
Versi 1.0.6
|
Tanggal rilis |
Deskripsi |
Unduh |
|
2024-11-13 |
|
Versi 1.0.5
|
Tanggal rilis |
Deskripsi |
Unduh |
|
2024-08-19 |
Memperbarui versi minimum Go yang dideklarasikan dalam file |
Versi 1.0.4
|
Tanggal rilis |
Deskripsi |
Unduh |
|
2024-07-17 |
|
Versi 1.0.3
|
Tanggal rilis |
Deskripsi |
Unduh |
|
2024-05-21 |
Menambahkan dukungan untuk konfigurasi Transport HTTP kustom. |
Versi 1.0.2
|
Tanggal rilis |
Deskripsi |
Unduh |
|
2021-03-05 |
Menambahkan dukungan untuk API OpenService. |
Versi 1.0.1
|
Tanggal rilis |
Deskripsi |
Unduh |
|
2021-01-15 |
|
Versi 1.0.0
|
Tanggal rilis |
Deskripsi |
Unduh |
|
2019-04-30 |
|