Descargue el SDK correspondiente a su lenguaje de programación para extraer los acuses de recibo de mensajes de una cola de SMQ.
Guía de versiones del SDK
Alibaba Cloud SMS ofrece el SDK V1.0 y el SDK V2.0. El SDK V2.0 es la versión más reciente e incluye las mismas funciones de API que el SDK V1.0. En comparación con el SDK V1.0, el SDK V2.0 es más robusto, más sencillo de usar y compatible con más lenguajes. También resuelve el problema de seguridad de hilos en clientes individuales, lo que mejora la experiencia de desarrollo.
El SDK V1.0 ya no recibe mantenimiento. Si aún utiliza la versión V1.0, actualice al SDK V2.0.
Descargas del SDK
El SDK de SMS internacional es compatible con varios lenguajes. Los métodos de instalación del SDK están disponibles en el portal OpenAPI. También puede consultar el código fuente y las guías de instalación en GitHub. Se recomienda instalar el SDK mediante la herramienta estándar de administración de dependencias de su lenguaje de programación.
|
Lenguaje |
Método de instalación del SDK |
Dirección de GitHub |
Inicio rápido |
|
Java |
|||
|
Python |
|||
|
PHP |
|||
|
Go |
|||
|
TypeScript |
|||
|
C++ |
/ |
||
|
C# |
|||
|
Swift |
/ |
Ejemplos de acuse de recibo de mensajes
Antes de invocar una API, configure las variables de entorno ALIBABA_CLOUD_ACCESS_KEY_ID y ALIBABA_CLOUD_ACCESS_KEY_SECRET para la autenticación del SDK. Pasos para configurar variables de entorno.
Ejemplo en Java
package com.alicom.mns.sample;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.alicom.mns.tools.inter.DefaultAlicomMessagePuller;
import com.alicom.mns.tools.inter.MessageListener;
import com.aliyun.mns.model.Message;
/**
* This is the DEMO for SMS MNS Queue messages consumption
* MessageType: SmsReport
*/
public class ReceiveDemo {
static class MyMessageListener implements MessageListener {
@Override
public boolean dealMessage(Message message) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("message receiver time from mns:" + format.format(new Date()));
System.out.println("message handle: " + message.getReceiptHandle());
System.out.println("message body: " + message.getMessageBodyAsString());
System.out.println("message id: " + message.getMessageId());
System.out.println("message dequeue count:" + message.getDequeueCount());
System.out.println("Thread:" + Thread.currentThread().getName());
try {
//Please start your own code here
} catch (Throwable e) {
// The exception caused by your own code. Message will not be deleted and can be retrieved again
return false;
}
// Message will be deleted for the format error
return true;
}
}
public static void main(String[] args) {
DefaultAlicomMessagePuller puller = new DefaultAlicomMessagePuller();
//Set the size of asynchronous thread
puller.setConsumeMinThreadSize(6);
puller.setConsumeMaxThreadSize(16);
puller.setThreadQueueSize(200);
puller.setPullMsgThreadSize(1);
//Only enabled when debugging, should be disabled at working status
puller.openDebugLog(false);
String regionIdForPop = "ap-southeast-1";
String endpointNameForPop = "ap-southeast-1";
//If you are sending SMS requests to Singapore Region OpenAPI (domain: dysmsapi.ap-southeast-1.aliyuncs.com)
//Please use
String domainForPop = "dybaseapi.ap-southeast-1.aliyuncs.com";
String mnsAccountEndpoint = "http://1493622401794734.mns.ap-southeast-1.aliyuncs.com";
//If you are sending SMS requests to Indonesia Region(Jakarta) OpenAPI (domain: dysmsapi.ap-southeast-5.aliyuncs.com)
//Please use
//String domainForPop = "dybaseapi.ap-southeast-5.aliyuncs.com";
//String mnsAccountEndpoint = "http://1493622401794734.mns.ap-southeast-5.aliyuncs.com";
//If you are sending SMS requests to Germany Region(Frankfurt) OpenAPI (domain: dysmsapi.eu-central-1.aliyuncs.com)
//String domainForPop = "dybaseapi.eu-central-1.aliyuncs.com";
//String mnsAccountEndpoint = "http://1493622401794734.mns.eu-central-1.aliyuncs.com";
//If you are sending SMS requests to US East Region(Virginia) OpenAPI (domain: dysmsapi.us-east-1.aliyuncs.com)
//String domainForPop = "dybaseapi.us-east-1.aliyuncs.com";
//String mnsAccountEndpoint = "http://1493622401794734.mns.us-east-1.aliyuncs.com";
//AccessKey and SecretKey you can get if from Alibaba Cloud Console
String accessKeyId = "";
String accessKeySecret = "";
//SmsReport
String messageType = "SmsReport";
//QueueName you can get it from Alibaba Cloud Sms Console
//Pattern: Alicom-Queue-{UID}-{messageType}
String queueName = "";
puller.startReceiveMsgForVPC(accessKeyId, accessKeySecret, messageType, queueName, regionIdForPop,
endpointNameForPop, domainForPop, mnsAccountEndpoint, new MyMessageListener());
//or init your IAcsClient(accessKeySecret free)
//puller.startReceiveMsg(acsClient, messageType, queueName, new MyMessageListener(), mnsAccountEndpoint);
}
}
Preguntas frecuentes
Error "SSL: CERTIFICATE_VERIFY_FAILED" al integrar el SDK de Python en macOS
El error websocket closed due to [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000) ocurre cuando el SDK de Python en macOS no logra verificar el certificado del servidor.
Esto suele suceder porque el certificado raíz no está configurado en su entorno de Python. Siga estos pasos para solucionarlo:
-
Exporte los certificados del sistema y establezca las variables de entorno: Exporte todos los certificados del sistema macOS a un archivo y configúrelo como la ruta predeterminada de certificados.
security find-certificate -a -p > ~/all_mac_certs.pem export SSL_CERT_FILE=~/all_mac_certs.pem export REQUESTS_CA_BUNDLE=~/all_mac_certs.pem -
Cree un vínculo simbólico para la configuración de OpenSSL de Python: Genere un vínculo simbólico hacia los certificados SSL del sistema. Reemplace la ruta según la versión de Python instalada.
# 3.9 is an example version number. Adjust the path based on the Python version installed on your local machine. ln -s /etc/ssl/* /Library/Frameworks/Python.framework/Versions/3.9/etc/openssl Reinicie la terminal y borre la caché: Cierre y vuelva a abrir la terminal para que las variables de entorno surtan efecto. Después, limpie cualquier caché existente e intente conectarse nuevamente al WebSocket.
Si el problema persiste tras completar estos pasos, compruebe la configuración de certificados del servidor de destino.