Todos los productos
Search
Centro de documentos

ApsaraMQ for RocketMQ:Envío y recepción de mensajes normales

Última actualización: Sep 04, 2026

Los mensajes normales son el tipo básico de mensaje en ApsaraMQ for RocketMQ. A diferencia de los mensajes programados, diferidos, ordenados y transaccionales, los mensajes normales no tienen semánticas especiales de entrega ni ordenamiento. Utilice mensajes normales para la comunicación asíncrona confiable que no requiere restricciones de tiempo ni secuencia.

Los ejemplos de esta página usan el SDK de cliente TCP para .NET.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • El SDK para .NET instalado. Para obtener más información, consulte Notas de versión.

  • Un entorno de desarrollo preparado. Para obtener más información, consulte Preparar el entorno.

  • Recursos de ApsaraMQ for RocketMQ (instancias, temas y grupos de consumidores) creados en la consola. Para obtener más información, consulte Crear recursos.

  • Un par de AccessKey para su cuenta de Alibaba Cloud. Para obtener más información, consulte Crear un par de AccessKey.

Enviar mensajes normales

Nota

Para consultar el proyecto de ejemplo completo, visite el repositorio de código de ApsaraMQ for RocketMQ.

El siguiente ejemplo envía mensajes normales mediante el SDK de cliente TCP para .NET. Reemplace los marcadores de posición con sus valores reales.

using System;
using ons;

public class ProducerExampleForEx
{
    public ProducerExampleForEx()
    {
    }

    static void Main(string[] args) {
        // Configure the producer properties.
        ONSFactoryProperty factoryInfo = new ONSFactoryProperty();

        // Load credentials from environment variables.
        // Set ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET
        // before running this example.
        factoryInfo.setFactoryProperty(ONSFactoryProperty::AccessKey, getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
        factoryInfo.setFactoryProperty(ONSFactoryProperty::SecretKey, getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));

        // Specify the Group ID created in the ApsaraMQ for RocketMQ console.
        factoryInfo.setFactoryProperty(ONSFactoryProperty.ProducerId, "<GROUP_ID>");

        // Specify the topic created in the ApsaraMQ for RocketMQ console.
        factoryInfo.setFactoryProperty(ONSFactoryProperty.PublishTopics, "<TOPIC>");

        // Specify the TCP endpoint from the Instance Details page
        // in the ApsaraMQ for RocketMQ console.
        factoryInfo.setFactoryProperty(ONSFactoryProperty.NAMESRV_ADDR, "<TCP_ENDPOINT>");

        // Specify the log file path.
        factoryInfo.setFactoryProperty(ONSFactoryProperty.LogPath, "C://log");

        // Create a producer instance.
        // Producer instances are thread-safe. A single instance can send
        // messages to multiple topics. In most cases, one instance per thread is sufficient.
        Producer producer = ONSFactory.getInstance().createProducer(factoryInfo);

        // Start the producer.
        producer.start();

        // Build a message with a topic, tag, and body.
        Message msg = new Message(factoryInfo.getPublishTopics(), "tagA", "Example message body");
        msg.setKey(Guid.NewGuid().ToString());

        // Send 32 messages in a loop.
        for (int i = 0; i < 32; i++) {
            try
            {
                SendResultONS sendResult = producer.send(msg);
                Console.WriteLine("send success {0}", sendResult.getMessageId());
            }
            catch (Exception ex)
            {
                Console.WriteLine("send failure{0}", ex.ToString());
            }
        }

        // Shut down the producer before exiting the thread.
        producer.shutdown();
    }
}

Reemplace los siguientes marcadores de posición con sus valores reales:

Marcador de posición

Descripción

Ejemplo

<GROUP_ID>

El identificador de grupo que creó en la consola de ApsaraMQ for RocketMQ

GID_example

<TOPIC>

El tema que creó en la consola de ApsaraMQ for RocketMQ

T_example_topic_name

<TCP_ENDPOINT>

El endpoint TCP de la sección TCP Endpoint en la página Instance Details

--

Explicación del código

  1. Configurar propiedades: establezca las credenciales, el identificador de grupo, el tema, el endpoint TCP y la ruta del archivo de registro mediante ONSFactoryProperty. Cargue el AccessKey ID y el AccessKey Secret desde las variables de entorno ALIBABA_CLOUD_ACCESS_KEY_ID y ALIBABA_CLOUD_ACCESS_KEY_SECRET.

  2. Crear e iniciar el productor: ONSFactory.getInstance().createProducer(factoryInfo) devuelve una instancia de productor segura para hilos. En la mayoría de los casos, basta con una instancia por hilo, incluso al enviar mensajes a varios temas.

  3. Construir y enviar mensajes: construya un objeto Message con un tema, una etiqueta y un cuerpo. Asigne una clave única con Guid.NewGuid() para rastrear el mensaje. producer.send(msg) devuelve un objeto SendResultONS que contiene el identificador del mensaje si el envío es exitoso.

  4. Finalizar: invoque producer.shutdown() antes de que termine el hilo para cerrar la instancia del productor.

Suscripción a mensajes normales

Para consultar las instrucciones y el código de ejemplo sobre cómo suscribirse a mensajes normales con el SDK de cliente TCP para .NET, consulte Subscribe to messages.

Pasos siguientes

  • Suscribirse a mensajes: configure un consumidor para recibir mensajes mediante el SDK de cliente TCP para .NET.

  • Explore otros tipos de mensajes en la referencia para desarrolladores: los mensajes programados, diferidos, ordenados y transaccionales admiten distintas semánticas de entrega.