标签:inux 字符 简单的 发送 自动 mil param 启用 display
Rabbitmq使用必须理解的一些概念创建或者声明一个exchange
/**
* amqp_exchange_declare
*
* @param [in] connect连接 amqp_new_connection获取
* @param [in] channel the channel to do the RPC on,程序自己设置一个通道号,一个连接可以多个通道号。
* @param [in] exchange 指定exchange名称 eg:amqp_cstring_bytes("exchange_cat")
* @param [in] type 指定exchange类型,amqp_cstring_bytes("direct")
* "fanout" 广播的方式,发送到该exchange的所有队列上。
* "direct" 通过路由键发送到指定的队列上。
* "topic" 通过匹配路由键的方式获取,使用通配符*,#
* @param [in] passive 检测exchange是否存在,设为true,若队列存在则命令成功返回(调用其他参数不会影响exchange属性),若不存在不会创建exchange,返回错误。设为false,如果exchange不存在则创建exchange,调用成功返回。如果exchange已经存在,并且匹配现在exchange的话则成功返回,如果不匹配则exchange声明失败。
* @param [in] durable 队列是否持久化
* @param [in] auto_delete 连接断开的时候,exchange是否自动删除
* @param [in] internal internal
* @param [in] arguments arguments
* @returns amqp_exchange_declare_ok_t
*/
AMQP_PUBLIC_FUNCTION
amqp_exchange_declare_ok_t *
AMQP_CALL amqp_exchange_declare(amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t exchange, amqp_bytes_t type, amqp_boolean_t passive, amqp_boolean_t durable, amqp_boolean_t auto_delete, amqp_boolean_t internal, amqp_table_t arguments);
调用函数之后,使用amqp_get_rpc_reply(conn)来获取调用结果。
amqp_exchange_declare(conn, 1, amqp_cstring_bytes("exchange_cat"), amqp_cstring_bytes("direct"), 1, 1, 0,0, amqp_empty_table);
die_on_amqp_error(amqp_get_rpc_reply(conn), "Declaring exchange");
注意事项
amqp_exchange_declare函数中的参数passive设置为0,会出现在声明exchange之后,声明队列amqp_queue_declare处于死循环的问题
amqp_exchange_declare(m_connState, 1, amqp_cstring_bytes(strExchange.c_str()), amqp_cstring_bytes("fanout"), 0, 1, 0, 0, amqp_empty_table);
amqp_queue_declare(m_connState, 1, amqp_cstring_bytes(strQueue.c_str()), 0, 0, 0, 1, amqp_empty_table);
amqp_queue_bind(m_connState, 1, amqp_cstring_bytes(strQueue.c_str()), amqp_cstring_bytes(strExchange.c_str()), amqp_empty_bytes, amqp_empty_table);
标签:inux 字符 简单的 发送 自动 mil param 启用 display
原文地址:http://blog.51cto.com/fengyuzaitu/2147101