Cette rubrique présente les notes de version, les instructions d'utilisation et des exemples de code pour le SDK Go.
Utilisation
Téléchargez et décompressez la dernière version du SDK Go, puis accédez au répertoire racine
aliyun-mns-go-sdk.-
Accédez au répertoire
example. Dans le fichierqueue_example.gooutopic_example.go, remplacez l'espace réservé de l'endpoint par l'endpoint de votre instance. Définissez ensuite les variables d'environnementALIBABA_CLOUD_ACCESS_KEY_IDetALIBABA_CLOUD_ACCESS_KEY_SECRET.Vous trouverez votre endpoint dans la section Endpoint des pages Queue Details ou Topic Details de la console. L'endpoint de l'instance se trouve dans la section Endpoint de la page Queue Details de la console Simple Message Queue. Cette section propose des endpoints publics et internes.
Exemples de code
Modèle de file d'attente
Cet exemple crée une file d'attente, envoie un message, reçoit et supprime ce message, puis supprime la file d'attente.
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))
}()
// Replace with your own endpoint.
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
}
}
Modèle de rubrique
Cet exemple crée une file d'attente et une rubrique, s'abonne à la rubrique et publie un message.
package main
import (
"fmt"
"time"
"github.com/aliyun/aliyun-mns-go-sdk"
"github.com/gogap/logs"
)
func main() {
// Replace with your own endpoint.
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. create a queue for receiving pushed messages
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. create the topic
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. subscribe to topic, the endpoint is queue
queueSub := ali_mns.MessageSubsribeRequest{
Endpoint: topic.GenerateQueueEndpoint(queueName),
NotifyContentFormat: ali_mns.SIMPLIFIED,
}
// 4. subscribe to topic, the endpoint is 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. now publish message
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. receive the message from queue
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
}
Notes de version
Version 1.0.11
|**Date de publication**
|
**Description**
|
**Téléchargement**
| | --- | --- | --- | |
20/03/2025
|
Rétrogradation de la dépendance `golang.org/x/net` de la version v0.36.0 à la version v0.33.0.
|
[Télécharger le SDK](https://github.com/aliyun/aliyun-mns-go-sdk/releases)
|
Version 1.0.10
|**Date de publication**
|
**Description**
|
**Téléchargement**
| | --- | --- | --- | |
17/03/2025
|
Correction d'un problème entraînant l'échec de la vérification de la région lors de la création de ressources d'endpoint suffixées par `-control`.
|
[Télécharger le SDK](https://github.com/aliyun/aliyun-mns-go-sdk/releases)
|
Version 1.0.9
|**Date de publication**
|
**Description**
|
**Téléchargement**
| | --- | --- | --- | |
11/03/2025
|
Correction du problème [issues#26](https://github.com/aliyun/aliyun-mns-go-sdk/issues/26), une erreur provoquée par l'absence du composant `StsTokenCredential` dans le package credential.
|
[Télécharger le SDK](https://github.com/aliyun/aliyun-mns-go-sdk/releases)
|
Version 1.0.8
|**Date de publication**
|
**Description**
|
**Téléchargement**
| | --- | --- | --- | |
06/02/2025
|
Ajout de la prise en charge de la configuration du paramètre `logEnable` lors de la création d'une file d'attente et de la mise à jour des propriétés.
|
[Télécharger le SDK](https://github.com/aliyun/aliyun-mns-go-sdk/releases)
|
Version 1.0.7
|
Date de publication |
Description |
Téléchargement |
|
23/01/2025 |
|
Version 1.0.6
|
Date de publication |
Description |
Téléchargement |
|
13/11/2024 |
|
Version 1.0.5
|**Date de publication**
|
**Description**
|
**Téléchargement**
| | --- | --- | --- | |
19/08/2024
|
Mise à jour de la version minimale de Go déclarée dans le fichier `go.mod` pour corriger un échec de compilation.
|
[Télécharger le SDK](https://github.com/aliyun/aliyun-mns-go-sdk)
|
Version 1.0.4
|
Date de publication |
Description |
Téléchargement |
|
17/07/2024 |
|
Version 1.0.3
|**Date de publication**
|
**Description**
|
**Téléchargement**
| | --- | --- | --- | |
21/05/2024
|
Ajout de la prise en charge des configurations personnalisées du transport HTTP.
|
[Télécharger le SDK](https://github.com/aliyun/aliyun-mns-go-sdk)
|
Version 1.0.2
|**Date de publication**
|
**Description**
|
**Téléchargement**
| | --- | --- | --- | |
05/03/2021
|
Ajout de la prise en charge de l'API OpenService.
|
[Télécharger le SDK](https://github.com/aliyun/aliyun-mns-go-sdk)
|
Version 1.0.1
|
Date de publication |
Description |
Téléchargement |
|
15/01/2021 |
|
Version 1.0.0
|
Date de publication |
Description |
Téléchargement |
|
30/04/2019 |
|