批量创建消息队列

来源:互联网 发布:软件的盈利模式 编辑:程序博客网 时间:2024/05/21 17:18

批量创建消息队列

接触RabbitMQ时间并不长,在此边学习边记录
话不多说,这里是个人写的通过将需要创建的队列名称放入容器,然后进行批量创建队列的方法。

首先是初始化:

#include "amqp_tcp_socket.h"#include "amqp.h"#include "amqp_framing.h"using namespace std;bool init(){    bool conected = false;    string strServerIP="";      //mq服务器地址    int iPort=8080;             //端口    string strHostName = "";    //主机名    string strUser = "":        //登录用户名    string strPassWord = "";    //登录密码    string channelNumber = "";  //频道数    amqp_connection_state_t _conn;  //连接    try    {        printf("CMQInstProcessControl 创建服务器连接开始");        do        {            _conn = amqp_new_connection();  //声明一个新的链接            amqp_socket_t * socket = amqp_tcp_socket_new(_conn);            if (!socket)            {                printf("amqp_tcp_socket_new 获取无效socket");                continue;            }            int status = amqp_socket_open(socket, strServerIP.c_str(), iPort);//获取socket.            if(status != AMQP_STATUS_OK)            {                printf("amqp_socket_open status异常");                continue;            }            try            {                amqp_login(_conn, strHostName.c_str(), 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, strUser.c_str(), strPassWord.c_str());            }            catch(...)            {                printf("amqp_login 异常");                continue;            }            try            {                amqp_channel_open(_conn, channelNumber);                amqp_get_rpc_reply(_conn);            }            catch(...)            {                printf("amqp_channel_open 异常");                continue;            }            conected = true;        } while (!conected);        printf(" 连接服务MQ器完成");    }    catch(CException &e)    {        printf("创建服务器连接异常,异常原因为: %s",e.what());    }    catch(...)    {        printf("创建服务器连接异常,其他异常");    }    return conected;}

然后进行批量创建队列,并绑定exchange:

void ::queueDeclare(std::vector<std::string>* vecMQName)//将要批量创建的队列名称存入容器中{    try    {        printf("开始批量创建MQ");        if(vecMQName.size()>0)        {            for(std::vector<std::string>::iterator itervec = vecMQName.begin(); itervec != vecMQName.end(); ++itervec)            {                printf("开始创建的消息队列为:%s",(*itervec).c_str());                //声明c                amqp_exchange_declare(_conn, channelNumber, amqp_cstring_bytes((*itervec).c_str()), amqp_cstring_bytes("fanout"), 0, true, 0, 0, amqp_empty_table);                //声明队列                amqp_queue_declare(_conn, channelNumber, amqp_cstring_bytes((*itervec).c_str()), 0, true, 0, 0, amqp_empty_table);                //将队列与exchange绑定起来                amqp_queue_bind(_conn, channelNumber, amqp_cstring_bytes((*itervec).c_str()), amqp_cstring_bytes((*itervec).c_str()),                      amqp_cstring_bytes((*itervec).c_str()), amqp_empty_table);            }        }        amqp_get_rpc_reply(_conn);        amqp_channel_close(_conn, channelNumber, AMQP_REPLY_SUCCESS);        amqp_connection_close(_conn, AMQP_REPLY_SUCCESS);        amqp_destroy_connection(_conn);        printf("批量创建MQ完成");    }    catch(CException &e)    {        printf("批量创建MQ时异常,异常原因为:%s",e.what());    }    catch(...)    {        printf("批量创建MQ时异常,异常未知");    }}

main函数的调用就不必歇了吧,首先初始化,然后将需要创建的队列放置在容器中,并调用queueDeclare方法,即可

本内容为个人原创,仅用于学习交流!!!

原创粉丝点击