上一節文章主要是說了一下rabbitmq的安裝以及搭建好環境的一些命令,以及常用的api呼叫,其實自從google被封掉之後,我之前收藏的很多技術連線都已經被禁止訪問了,這個是多麼可悲的一件事情啊,說多了都是淚。
首先,我先寫一段消費者的模組,建立連線,初始化amq以及銷毀連線:
[cpp]view plain
copy
comsumer::comsumer()
void
comsumer::init()
} comsumer::~comsumer()
logserver::die_on_amqp_error(amqp_channel_close(conn, (amqp_channel_t)g_logsrv.m_conf.m_channel, amqp_reply_success), "closing channel"
);
logserver::die_on_amqp_error(amqp_connection_close(conn, amqp_reply_success), "closing connection"
);
logserver::die_on_error(amqp_destroy_connection(conn), "ending connection"
);
}
然後再寫一段消費者的佇列,他也是可持久化的佇列:
[cpp]view plain
copy
producer::producer()
void
producer::init()
conn.props._flags = amqp_basic_content_type_flag | amqp_basic_delivery_mode_flag;
conn.props.content_type = amqp_cstring_bytes("text/plain"
);
conn.props.delivery_mode = 2;
} producer::~producer()
logserver::die_on_amqp_error(amqp_channel_close(conn.conn, (amqp_channel_t)g_logsrv.m_conf.m_channel, amqp_reply_success), "closing channel"
);
logserver::die_on_amqp_error(amqp_connection_close(conn.conn, amqp_reply_success), "closing connection"
);
logserver::die_on_error(amqp_destroy_connection(conn.conn), "ending connection"
);
}
最後就是如何向rabbitmq中寫訊息和取訊息了:
[cpp]view plain
copy
void
logserver::writetoamqqueue(
bool
isquick, string str)else
} void
logserver::runamqconsumer();
amqp_maybe_release_buffers(m_consumer.conn);
ret = amqp_consume_message(m_consumer.conn, &envelope, null, 0);
if(ret.reply_type == amqp_response_normal )
str[envelope.message.body.len-1] = '\0'
; log(debug)("recv from amq:len:%d,%s\n"
,envelope.message.body.len,str);
vectorvectstr;
util::strsplit(str, "|"
, vectstr);
if(vectstr.size() > 8 && (g_logsrv.m_conf.quickwords.find(vectstr[8]) != g_logsrv.m_conf.quickwords.end()))
else
amqp_destroy_envelope(&envelope);
// pushmsgqueue(str);
str = null;
} else
if(ticktime + fametick
continue
; }
} }
讀書的一些感悟
讀書學習幾重境界 1.死記硬背,只知其一,不知其二。只看不思 初識境界 2.理解書本知識,知道其原理,結構,出現的原因。可以忘記時間 地點,完全沉醉 昇華境界 3.達到理解並舉例反三。可以將自身置於課本之中,忘記自己 忘我境界 4.將所學熟爛於心,靈活運用。可以將知識深層藏人大腦,需要時,能信手拈來...
最近的一些感悟
隨便寫寫,歡迎拍磚 作為乙個編碼員的基本任務就是依據設計,從既定的輸入得到既定的輸出。乙個模組無論看起來有多麼猙獰,對外界而言無非就是輸入和輸出,內部的操作應該是盡可能封閉的。作為乙個設計師的任務則是依據需求,劃分出既定而明確的模組和各模組之間的關係。分割線 致命的錯誤往往不會因為編碼而產生,而是在...
最近的一些感悟
我覺得這也是我們公司目前的問題,因為老大是對技術非常執著而他本人也的確是乙個技術非常全面的人,所以他對我們的要求也是需要我們掌握盡量多的東西,希望我們什麼都要懂。我們公司是做android odm的,對android系統從上到下都會有所涉及,所以老大會對我們有這樣的要求也無可厚非了。在程式中啟動了過...