Todos os produtos
Search
Central de documentação

ApsaraMQ for RocketMQ:Send and receive normal messages

Última atualização: Jun 27, 2026

As mensagens normais são o tipo básico de mensagem no ApsaraMQ for RocketMQ. Diferentemente das mensagens agendadas, atrasadas, ordenadas e transacionais, elas não possuem semântica especial de entrega ou ordenação. Utilize mensagens normais para comunicação assíncrona confiável sem restrições de tempo ou sequência.

Os exemplos nesta página usam o SDK de cliente TCP para .NET.

Pré-requisitos

Antes de começar, verifique se você tem:

  • O SDK para .NET instalado. Para mais informações, consulte Notas de versão

  • Um ambiente de desenvolvimento preparado. Para mais detalhes, consulte Preparar o ambiente

  • Recursos do ApsaraMQ for RocketMQ (instâncias, tópicos e grupos de consumidores) criados no console. Para mais informações, consulte Criar recursos

  • Um par de AccessKey para sua conta Alibaba Cloud. Para mais informações, consulte Criar um par de AccessKey

Enviar mensagens normais

Nota

Para obter o projeto de exemplo completo, consulte o repositório de código do ApsaraMQ for RocketMQ.

O exemplo a seguir envia mensagens normais usando o SDK de cliente TCP para .NET. Substitua os espaços reservados pelos valores reais.

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();
    }
}

Substitua os seguintes espaços reservados pelos valores reais:

Espaço reservado

Descrição

Exemplo

<GROUP_ID>

O Group ID criado no console do ApsaraMQ for RocketMQ

GID_example

<TOPIC>

O tópico criado no console do ApsaraMQ for RocketMQ

T_example_topic_name

<TCP_ENDPOINT>

O endpoint TCP na seção TCP Endpoint da página Instance Details

--

Explicação do código

  1. Configurar propriedades: defina credenciais, Group ID, tópico, endpoint TCP e caminho de log por meio de ONSFactoryProperty. Carregue o AccessKey ID e o AccessKey Secret das variáveis de ambiente ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET.

  2. Criar e iniciar o produtor: ONSFactory.getInstance().createProducer(factoryInfo) retorna uma instância de produtor segura para threads. Na maioria dos casos, uma instância por thread é suficiente, mesmo ao enviar mensagens para vários tópicos.

  3. Construir e enviar mensagens: crie um objeto Message com tópico, tag e corpo. Atribua uma chave exclusiva com Guid.NewGuid() para rastrear a mensagem. producer.send(msg) retorna um objeto SendResultONS com o ID da mensagem em caso de sucesso.

  4. Encerrar: execute producer.shutdown() antes de sair da thread para finalizar a instância do produtor.

Inscrever-se em mensagens normais

Para obter instruções e códigos de exemplo sobre como se inscrever em mensagens normais com o SDK de cliente TCP para .NET, consulte Inscrever-se em mensagens.

Próximos passos

  • Inscrever-se em mensagens: configure um consumidor para receber mensagens usando o SDK de cliente TCP para .NET.

  • Consulte outros tipos de mensagem na Referência do Desenvolvedor: mensagens agendadas, atrasadas, ordenadas e transacionais oferecem diferentes semânticas de entrega.