Este tópico descreve como preparar o ambiente para usar o C++ SDK v1.x.x na conexão com o Message Queue for Apache RocketMQ. Assim, você pode utilizar o SDK para enviar e receber mensagens.
Antes de começar:
Este tópico aplica-se apenas ao C++ SDK v1.x.x.
No console, crie os tópicos e group IDs que seu código utilizará. Você pode personalizar tags de mensagem na aplicação. Para mais informações sobre a criação de recursos, consulte Create resources.
Implante as aplicações que utilizam o Message Queue for Apache RocketMQ em instâncias ECS.
Baixe o Tablestore SDK for C++
O C++ SDK oferece suporte aos sistemas operacionais Windows e Linux com interfaces idênticas. No Linux, há suporte para as séries CentOS 6 (RHEL 6) e CentOS 7 (RHEL 7). Para obter mais informações sobre como baixar o C++ SDK, consulte Release notes for the TCP client SDK for C++.
Após concluir o download, descompacte o pacote. A estrutura de diretórios é a seguinte:
-
demo/ (apenas para Windows)
Contém um exemplo de C++ para Windows pré-criado.
-
example/
Os exemplos incluem envio de mensagens normais, envio unidirecional, envio ordenado, consumo normal e consumo ordenado. O Linux também inclui um
Makefilepara compilar e gerenciar o diretórioexample. -
include/
Este diretório contém os arquivos de cabeçalho necessários para seus programas.
-
lib/
-
Os subdiretórios abaixo do SDK para Linux contêm as bibliotecas estáticas e dinâmicas de 64 bits.
lib-boost-share/ libonsclient4cpp.so lib-boost-static/ libonsclient4cpp.a -
O subdiretório do SDK para Windows apresentado a seguir contém a biblioteca DLL do SDK para sistemas de 64 bits. Caso o ambiente Visual Studio 2015 não esteja instalado, copie o arquivo de instalação
vc_redist.x64. Este é o ambiente de tempo de execução do Visual C++ 2015.64/ vc_redist.x64
-
-
SDK_GUIDE.pdf
Contém a documentação e as perguntas frequentes (FAQ) sobre a preparação do ambiente do SDK.
-
changelog
Lista correções de bugs e novos recursos das versões recentes.
C++ SDK para Linux
Desde 2 de dezembro de 2016, a versão CPP para Linux depende da biblioteca boost de alto desempenho (versão 1.62.0), o que reduz a utilização de recursos de CPU e melhora a eficiência operacional. Atualmente, ela depende principalmente de quatro bibliotecas: boost_system, boost_thread, boost_chrono e boost_filesystem. Existem duas soluções: biblioteca estática e biblioteca dinâmica.
Solução estática
O arquivo de biblioteca do ApsaraMQ for RocketMQ encontra-se no diretório lib/lib-boost-static. A biblioteca boost está vinculada estaticamente ao arquivo libonsclient4cpp.a. Se sua aplicação não depender da biblioteca boost, selecione diretamente a solução de biblioteca estática. Nessa modalidade, a biblioteca boost correspondente já está vinculada ao libonsclient4cpp.a. Basta vincular o libonsclient4cpp.a durante a compilação, sem necessidade de outras operações. O código a seguir mostra um exemplo de configuração dos campos:
cd aliyun-mq-linux-cpp-sdk // The path where the downloaded SDK is decompressed.
cd example // Go to the example directory, modify the example file, and enter the information about the topic and key that you created.
make static=1
Para vínculos totalmente estáticos, certifique-se de que libstdc++, pthread e outras bibliotecas estáticas relacionadas estejam instaladas na máquina. Por padrão, a libstdc++ não vem com bibliotecas estáticas instaladas; portanto, instale-as via yum ou apt-get.
Além disso, algumas mensagens de aviso podem aparecer conforme mostrado abaixo ao usar o método acima.
warning: Using 'gethostbyaddr' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
Recomenda-se evitar vínculos completamente estáticos. Em vez disso, vincule estaticamente apenas o onsclient4cpp e utilize vínculos dinâmicos para as demais bibliotecas. O código a seguir exemplifica essa configuração:
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
Adicionalmente, como o GCC 5.x introduziu o Dual ABI, adicione a opção de compilador -D_GLIBCXX_USE_CXX11_ABI=0 durante a compilação e vinculação.
Soluções dinâmicas
O arquivo de biblioteca do ApsaraMQ for RocketMQ está no diretório lib/lib-boost-share. Ao gerar o arquivo executável, vincule a biblioteca dinâmica boost e o libonsclient4cpp.so. Caso sua aplicação já dependa da biblioteca boost e você opte pela solução dinâmica, execute as etapas abaixo para configurar essa dependência:
-
Baixe o Boost 1.62.0.
-
Descompacte o boost 1.62.0.
tar --bzip2 -xf /path/to/boost_1_62_0.tar.bz2 -
Instale o boost versão 1.62.0:
Acesse o caminho após a descompactação do 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. Se houver saída relevante, isso indica que a biblioteca dinâmica boost está no caminho de busca de bibliotecas dinâmicas.-
Ao gerar um arquivo executável, vincule a biblioteca dinâmica boost e a biblioteca dinâmica do ApsaraMQ for RocketMQ. Utilize o método abaixo.
cd aliyun-mq-linux-cpp-sdk // The path where the downloaded SDK is decompressed. cd example // Go to the example directory, modify the example file, and enter the topics and keys that you created in the Message Queue for Apache 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 dynamically loaded search paths. ./a.out //Run the program.
C++ SDK para Windows
Usar o C++ SDK no Visual Studio 2015
-
Crie um projeto no Visual Studio 2015.
Clique em New Project. Na caixa de diálogo New Project, selecione Installed > Templates > Visual C++ > Win32. Em seguida, escolha Win32 Console Application e clique em OK para criar o projeto.
Na caixa de diálogo Win32 Application Wizard, confirme se o tipo de projeto é Console application e clique em Next para avançar à próxima etapa de configuração.
Defina Application type como Console application, marque Empty project e clique em Finish para criar um projeto vazio.
Clique com o botão direito no projeto e selecione Property > Configuration Manager. Defina Active solution configuration como release e Active solution platform como x64.
-
Clique com o botão direito no projeto e acesse Property > Configuration Properties > General. 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.
Defina Platform Toolset como Visual Studio 2015 - Windows XP (v140_xp). O valor de Output Directory é
$(SolutionDir)$(Platform)\$(Configuration)\, gerado automaticamente após o build. Copie ONSClient4CPP.dll, ONSClient4CPP.lib e ONSClient4CPP.pdb do diretório lib do SDK para este diretório de saída de build. -
Clique com o botão direito no projeto e acesse Property > Configuration Properties > C/C++ > General. Defina Additional Include Directories como /B. Copie os arquivos de cabeçalho do diretório
includepara /B.Adicione o caminho do diretório include do SDK (por exemplo,
E:\aliyun-mq-windows-cpp-sdk\include). Alternativamente, especifique outro diretório e copie os arquivos include do SDK para ele. Se estiver usando VS2015 no Windows 7, adicione também o caminho ucrt do Windows Kits, por exemplo,C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt. -
Clique com o botão direito no projeto e acesse Property > Configuration Properties > Linker > General. Defina Additional Library Directories como /A.
Adicione os seguintes caminhos:
O caminho do diretório
lib\64do SDK (contém os arquivos DLL relevantes).Se usar VS2015 no Windows 7, adicione também o caminho ucrt\x64 do Windows Kits, por exemplo,
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10150.0\ucrt\x64.
Clique com o botão direito no projeto e acesse Property > Configuration Properties > Linker > Input. Defina Additional Dependencies como ONSClient4CPP.lib.
-
Clique com o botão direito no projeto e acesse Property > Configuration Properties > C/C++ > Preprocessor. Adicione a macro WIN32 em Preprocessor Definitions.
Defina Preprocessor Definitions como
NDEBUG;WIN32_CONSOLE;%(PreprocessorDefinitions).
Usar o C++ SDK em ambientes diferentes do Visual Studio 2015
Configure seu ambiente seguindo as etapas da seção "Usar o C++ SDK no Visual Studio 2015".
-
Instale o vc_redist.x64, o tempo de execução do Visual C++ 2015.
ImportantePara evitar configurações complexas, utilize o demo pré-configurado do SDK. Após baixar e extrair o SDK, acesse o diretório demo e abra o projeto no Visual Studio 2015.
No Solution Explorer, clique com o botão direito no projeto demo e selecione Properties para abrir a página de propriedades.
Expanda Configuration Properties > C/C++ > General.
Edite Additional Include Directories e adicione os caminhos
../../includeeC:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt.Substitua o número da versão no caminho ucrt (como
10.0.10150.0) pela versão do Windows SDK instalada na sua máquina.
Clique em Build para compilar o projeto. Para executar o arquivo gerado, copie as DLLs necessárias para o diretório do executável ou para um diretório do sistema.