Este tópico descreve os preparativos, as instruções e as observações para usar o SDK C++ no envio e recebimento de mensagens com o ApsaraMQ for RocketMQ.
Recomendamos o uso dos SDKs mais recentes do RocketMQ 5.x. Eles são totalmente compatíveis com os brokers do ApsaraMQ for RocketMQ 5.x e oferecem mais funções e recursos aprimorados. Para obter mais informações, consulte Informações da versão do SDK C++.
A Alibaba Cloud mantém apenas os SDKs cliente do RocketMQ 4.x, 3.x e TCP. Recomendamos seu uso exclusivamente para cargas de trabalho existentes.
Antes de começar, observe os seguintes pontos:
Este guia aplica-se somente ao SDK C++ v1.x.x.
Crie previamente no console o Topic e o group ID usados no código. Você pode personalizar totalmente as tags de mensagem na aplicação. Para instruções sobre como criar esses recursos, consulte Criar recursos.
Implante as aplicações que usam o ApsaraMQ for RocketMQ em instâncias ECS.
Baixe o SDK
O SDK C++ oferece uma API idêntica para Windows e Linux. As distribuições Linux suportadas incluem CentOS 6 (RHEL 6) e CentOS 7 (RHEL 7). Para baixar o SDK C++, consulte Notas de versão do SDK cliente TCP para C++.
Após baixar e extrair o pacote, a seguinte estrutura de diretórios estará disponível:
-
demo/ (Somente para Windows)
Projeto de demonstração C++ pré-compilado para Windows.
-
example/
Exemplos de envio de mensagens normais, unidirecionais e ordenadas, além de consumo de mensagens normais e ordenadas. No Linux, este diretório também contém um
Makefilepara compilar e gerenciar os arquivos deexample. -
include/
Arquivos de cabeçalho necessários para a aplicação.
-
lib/
-
Subdiretórios do SDK para Linux contendo a biblioteca estática e a biblioteca dinâmica de 64 bits.
lib-boost-share/ libonsclient4cpp.so lib-boost-static/ libonsclient4cpp.a -
Subdiretório do SDK para Windows contendo a DLL de 64 bits. Caso não tenha o Visual Studio 2015 instalado, instale o
vc_redist.x64, que corresponde ao runtime do Visual C++ 2015.64/ vc_redist.x64
-
-
SDK_GUIDE.pdf
Documentação e perguntas frequentes sobre a configuração do ambiente do SDK.
-
changelog
Lista de correções de bugs e novos recursos das versões recentes.
SDK C++ para Linux
Desde 2 de dezembro de 2016, o SDK C++ para Linux depende da biblioteca Boost de alto desempenho (versão 1.62.0) para reduzir o uso de CPU e melhorar a eficiência. Ele depende principalmente de quatro bibliotecas: boost_system, boost_thread, boost_chrono e boost_filesystem. Estão disponíveis soluções de vinculação estática e dinâmica.
Vinculação estática
Os arquivos de biblioteca do ApsaraMQ for RocketMQ estão no diretório lib/lib-boost-static, onde a biblioteca Boost é vinculada estaticamente ao libonsclient4cpp.a. Se sua aplicação não depender da biblioteca Boost, use diretamente esta solução de biblioteca estática. Como a biblioteca Boost já está vinculada ao libonsclient4cpp.a, basta vincular o libonsclient4cpp.a durante a compilação. Nenhuma outra operação é necessária. O uso é descrito a seguir.
cd aliyun-mq-linux-cpp-sdk // The directory where you extracted the SDK.
cd example // Enter the example directory and modify the example file with your topic, key, and other information.
make static=1
Para uma vinculação totalmente estática, certifique-se de que bibliotecas estáticas relacionadas, como libstdc++ e pthread, estejam instaladas na máquina. A instalação padrão da libstdc++ não inclui a biblioteca estática. Use yum ou apt-get para instalar as bibliotecas estáticas necessárias.
O uso desse método pode gerar o seguinte aviso:
warning: Using 'gethostbyaddr' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
Como prática recomendada, evite a vinculação totalmente estática. Em vez disso, vincule estaticamente apenas o onsclient4cpp e vincule dinamicamente as outras bibliotecas. Utilize o seguinte comando:
g++ -ggdb -Wall -O3 -I../include ../example/ProducerExampleForEx.cpp -Wl,-static -lonsclient4cpp -L../lib/lib-boost-static/ -Wl,-Bdynamic -lpthread -ldl -lrt -o ../example/ProducerExampleForEx
Além disso, como o GCC 5.x introduz uma Dual ABI, adicione a opção -D_GLIBCXX_USE_CXX11_ABI=0 ao compilar e vincular.
Vinculação dinâmica
Os arquivos de biblioteca do ApsaraMQ for RocketMQ estão no diretório lib/lib-boost-share. Vincule as bibliotecas dinâmicas do Boost e o libonsclient4cpp.so ao gerar o arquivo executável. Se sua aplicação já depender do Boost e você precisar usar a solução de vinculação dinâmica, execute as etapas a seguir:
-
Baixe o Boost versão 1.62.0.
-
Extraia o pacote do Boost 1.62.0.
tar --bzip2 -xf /path/to/boost_1_62_0.tar.bz2 -
Instale o Boost 1.62.0.
Acesse o diretório onde você extraiu o Boost 1.62.0:
cd path/to/boost_1_62_0Configure o Boost:
./bootstrap.shCompile o Boost:
./b2 link=shared runtime-link=sharedInstale o Boost:
./b2 install
Execute
ldconfig -v|grep libboost. Qualquer saída deste comando confirma que as bibliotecas dinâmicas do Boost estão no caminho de busca de bibliotecas dinâmicas.-
Ao gerar o arquivo executável, vincule as bibliotecas dinâmicas do Boost e a biblioteca dinâmica do ApsaraMQ for RocketMQ usando os seguintes comandos:
cd aliyun-mq-linux-cpp-sdk // The directory where you extracted the SDK. cd example // Enter the example directory and modify the example file with your topic, key, and other information from the ApsaraMQ for RocketMQ console. g++ -Wall -Wno-deprecated -L ../lib/lib-boost-share/ -I ../include/ ProducerExampleForEx.cpp -lonsclient4cpp -lboost_system -lboost_thread -lboost_chrono -lboost_filesystem -lpthread export LD_LIBRARY_PATH="../lib/lib-boost-share/" // Add the search path for dynamic loading. ./a.out // Run the program.
SDK C++ para Windows
Usar o SDK C++ em um ambiente Visual Studio 2015
Crie um novo projeto no Visual Studio 2015. Na caixa de diálogo New Project, expanda Installed > Templates > Visual C++, selecione Win32 e escolha Win32 Console Application. Após definir um nome para o projeto, clique em OK. Na página de visão geral do Win32 Application Wizard, confirme se o tipo de projeto é Console application e clique em Next >. Na página Application Settings, defina Application type como Console application, marque a caixa de seleção Empty project e clique em Finish.
Clique com o botão direito do mouse no projeto no Solution Explorer e selecione Properties > Configuration Manager. Defina Active solution configuration como release e Active solution platform como x64.
Clique com o botão direito do mouse no projeto, selecione Properties > Configuration Properties > General e defina Output Directory como /A. Com base na configuração de Active solution platform, copie todos os arquivos do diretório lib de 64 bits para o diretório de saída /A. Clique com o botão direito do mouse no projeto, selecione Properties > Configuration Properties > General, confirme se o Output Directory é
$(SolutionDir)$(Platform)\$(Configuration)\(este caminho é gerado automaticamente após a compilação) e defina Platform Toolset como Visual Studio 2015 - Windows XP (v140_xp). Copie os arquivosONSClient4CPP.dll,ONSClient4CPP.libeONSClient4CPP.pdbdo diretório lib do SDK baixado para este diretório de saída.Clique com o botão direito do mouse no projeto e selecione Properties > Configuration Properties > C/C++-General > Additional Include Directories: /B. Copie os arquivos de cabeçalho do diretório
includepara o diretório include: /B.Clique com o botão direito do mouse no projeto e selecione Properties > Configuration Properties > Linker > General > Additional Library Directories: /A. Adicione o caminho para o diretório
libdo SDK, comoE:\aliyun-mq-windows-cpp-sdk\lib\64, que contém os arquivos DLL relevantes. Se você usar o Visual Studio 2015 no Windows 7, também deverá adicionar o caminho da bibliotecaucrt, comoC:\Program Files (x86)\Windows Kits\10\Lib\10.0.10150.0\ucrt\x64.Acesse Properties > Configuration Properties > Linker > Input. Adicione ONSClient4CPP.lib em Additional Dependencies.
Acesse Properties > Configuration Properties > C/C++ > Preprocessor. Adicione a macro WIN32 em Preprocessor Definitions.
Usar o SDK C++ em um ambiente diferente do Visual Studio 2015
Primeiro, configure seu projeto seguindo as etapas para o ambiente Visual Studio 2015.
-
Instale o vc_redist.x64, o runtime do Visual C++ 2015.
ImportantePara evitar configurações manuais, utilize a demonstração pré-configurada do SDK. Após baixar e extrair o SDK, acesse o diretório
demoe abra o projeto no Visual Studio 2015.No Solution Explorer, clique com o botão direito do mouse no projeto demo e abra suas propriedades. Defina Configuration como Release e Platform como x64. Expanda Configuration Properties > C/C++ > General. Edite o campo Additional Include Directories e adicione dois caminhos:
../../includeeC:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt. Substitua o número da versão, como 10.0.10150.0, pela versão do Windows Kits instalada na sua máquina.Seu ambiente de compilação está configurado. Clique em Build para compilar o programa executável. Para executar o programa, copie o arquivo DLL para o mesmo diretório do executável ou para um diretório do sistema.