就算筆記寫的再差,也要自己寫, 寫了感覺就是自己的,其他優秀的資料看到最多,感覺也不是自己的
channel.exchangedeclare(exchange: exchange_name, type: exchange_type);
public static void exchangedeclare(this imodel model, string exchange, string type, bool durable = false, bool autodelete = false, idictionaryarguments = null)
宣告方法的五個引數
string exchange :名稱
bool autodelete ,是否自動刪除,設定為true則表是自動刪除,自刪除的前提是至少有乙個佇列或者交換器與這交換器繫結,之後所有與這個交換器繫結的佇列或者交換器都與此解綁,一般都設定為fase
idictionaryarguments ,alternate-exchange等一些結構化引數
宣告佇列
if (!isfanout)
else
繫結佇列
public static void queuebind(this imodel model, string queue, string exchange, string routingkey, idictionaryarguments = null)
queue:佇列名
exchange:交換機
routingkey:路由key
arguments
void basicqos(uint prefetchsize, ushort prefetchcount, bool global);
配置basic內容類的qos引數。
第乙個引數是可接收訊息的大小的 0不受限制
第二個引數是處理訊息最大的數量 1 那如果接收乙個訊息,但是沒有應答,則客戶端不會收到下乙個訊息,訊息只會在佇列中阻塞
第三個引數則設定了是不是針對整個connection的,因為乙個connection可以有多個channel,如果是false則說明只是針對於這個channel的。
basic.qos是針對channel進行設定的,也就是說只有在channel建立之後才能傳送basic.qos信令。
在rabbitmq的實現中,每個channel都對應會有乙個rabbit_limiter程序,當收到basic.qos信令後,在rabbit_limiter程序中記錄信令中prefetch_count的值,同時記錄的還有該channel未ack的訊息個數。
// 1種
eventingbasicconsumer consumer = new eventingbasicconsumer(this.channel);
// 2.種
basicgetresult result = channel.basicget(queue:"routingkey",autoack:true);
eventingbasicconsumer是基於長連線,發布訂閱模式的消費方式,節省資源且實時性好,這是開發中最常用的消費模式。
在一些需要消費者主動獲取訊息的場合,我們可以使用get方式,get方式是基於短連線的,請求響應模式的消費方式,也就是說只有消費者這邊主動請求時才獲取資料
// 訂閱事件
consumer.received += (model, bdea) =>
;
public static string basicconsume(this imodel model, string queue, bool autoack, ibasicconsumer consumer)
queue 佇列名
autoack 是否自動確認訊息,true自動確認,false 不自動要手動呼叫,建立設定為false
consumer 傳送者方式
具體實現
// funcfunc,
public void bindreceivemqmsg(funcfunc, icallbackfunction function, string routingkey, string exchange_name = null, string exchange_type = null)
else
channel.exchangedeclare(exchange: exchange_name, type: exchange_type);
if (!isfanout)
else
channel.queuebind(routingkey, exchange_name, isfanout ? exchange_name : "");
eventingbasicconsumer consumer = new eventingbasicconsumer(this.channel);
consumer.received += (model, bdea) =>
rbtmessage mqmsg = jsonconvert.deserializeobject(message);
function.processmsgasync(mqmsg);
bool result = true;
if (func != null)
if (result)
};channel.basicconsume(queue: routingkey, autoack: false, consumer: consumer);
}catch (exception ex)
}
rabbmitmq能寫的還有很多,但工作的原因,怕不寫就忘了,而且現在也只是了解調的階段。所以雖然筆記是流水賬,也要記錄下來 C Boost 初步了解
boost是由c 標準委員會成員發起 眾多c 業界高人參與設計並實現的乙個涉及面廣 質量高且業已廣泛使用的c 標準後備庫,其中 tr1已經被納入c 0x標準庫。不論從風格和內容組織上講,都可以認為boost專案是c 標準庫的延伸。截止到boost 1.43版本,boost專案擁有大約100個用途廣泛...
jquery 初步了解
js 建立函式有以下三種方法 1 函式關鍵字 function foo x 2 匿名函式 var func function x 3 建構函式 var func new function x alert x 建構函式每次執行時都解析函式主題 頻繁呼叫建構函式效率很低 並且建構函式不能遞迴使用 關鍵字...
Tomcat初步了解
http協議預設的埠號為80,如果伺服器的埠號為80,則url中的埠號可以省略,否則必須使用冒號加埠號指明埠。tomcat的埠號可在g soft apache tomcat 7.0.59 conf server.xml檔案中配置 訪問本機tomcat伺服器的方式 2.3.http 本機ip 8080...