關於專案中NServiceBus和MEF注入(WCF服務代理失效)的兩個問題
問題之一:
最近一個專案兩個NServiceBus終結點,一個執行在客戶端,一個執行在伺服器端。
客戶端的MasterNode設定為伺服器端的地址,這樣就不需要在客戶端安裝NServiceBus的軟體,而不會報RavenDB連線失敗的錯誤了。
但是啟動的時候會報錯:“無法建立佇列,或者沒有對應的許可權”。win7下面,管理員許可權執行也是一樣。暫時的解決方法是手動建立一個事務性的訊息佇列。
然後我又安裝伺服器端的終結點,首先安裝了NServiceBus的軟體(這個軟體主要就是安裝RavenDB,安裝訊息佇列等。),然後啟動服務端的終結點,仍然是同樣的錯誤,由此可知這個錯誤和是否安裝了NServiceBus的軟體是沒有關係的。
這個問題亟需解決,不可能讓使用者用我的軟體還要去手動建立一個訊息佇列吧。
解決方法:
目前我暫時的解決方法就是利用.Net中的MessageQueue這個類的create方法顯示建立訊息佇列,注意第一個引數是訊息佇列名稱,第二個引數設定為true表示建立的訊息佇列為事務型訊息佇列。
問題之二:
我在NServiceBus啟動的start函式中利用MEF注入了兩個類,在定時器中定時呼叫這兩個類的方法,開始一段時間大概幾十分鐘的樣子執行沒有問題。
但是時間長了,就會丟擲異常:“The communication object. System.ServiceModel.Channels.ServiceChannel. can not be used for communication beacause it is in the faulted state”,有時候異常是“The socket connection has disconnected...”
開始我以為是MEF啟動時候注入一次物件,之後定時器中定期使用這兩個物件,時間長了這兩個物件失效了。。。
後來和別人聊到這個問題,才注意到可能和WCF服務有關,然後才發現我是在注入物件的類的建構函式中建立了WCF服務代理,之後每次在定時器的這兩個物件的呼叫的方法中呼叫了WCF服務,時間長了WCF服務就失效了。。。
解決方法:
(1)每次呼叫定時器都重新Compose一次,即重新進行一次MEF物件注入;每次都注入,都意味著每次都會建立新的WCF服務代理,所以效率較低。
(2)還是隻在start的時候注入一次,我想MEF注入的物件是不會失效的,因為不是遠端代理物件嘛!!! 然後每次呼叫注入物件的方法中,首先判斷WCF服務時候失效,如果失效了就顯式重新建立WCF服務代理。
如果判斷WCf服務是否失效呢?
很簡單,在WCF服務中預留一個空方法,每次呼叫真正的方法之前呼叫一次這個方法,捕獲異常,如果出現異常,則說明失效了。
相關文章
- 專案中Spring事務失效的場景問題排查Spring
- WCF服務端的.NET Core支援專案Core WCF 正式啟動服務端
- 關於Delphi中TRttiContext.FindType失效的問題Context
- 關於jQuery radio 選中失效的問題jQuery
- SAS服務效能問題專案
- 記錄springboot專案裡關於session的一個問題(session監聽器失效)Spring BootSession
- 關於兩個簡單問題的分析
- 一個電商專案的Web服務化改造2:現有專案的5個問題Web
- MEF程式設計指南六:MEF中的目錄服務(DeploymentCatalog) 薦程式設計
- nodejs訪問WCF服務NodeJS
- 關於dcat-admin的兩個問題...
- 關於Windows10服務中沒有SNMP Service問題Windows
- 關於非同步郵件傳送服務的思路,和 Swoole 非同步任務的一個問題非同步
- 關於lnmp配置laravel專案的問題?LNMPLaravel
- 關於專案內模組引用的問題
- 關於 Laravel mix 導致 Bootstrap 失效的問題Laravelboot
- 關於專案經理/IT顧問的兩則笑話
- 請教一個問題,關於上傳檔案和圖片的問題
- 關於網站專案報價的問題網站
- 關於idea部署本地專案的問題Idea
- 兩個關於許可權設定的問題思考
- 提個小問題--關於jdbc事務JDBC
- 一個電商專案的Web服務化改造7:Dubbo服務的呼叫,4個專案Web
- 影響代理IP訪問速度的兩個關鍵
- 請教您關於 Nginx 下多個 Laravel 專案的部署問題NginxLaravel
- 關於在web project專案中的程式碼重用問題討論WebProject
- 如何利用memcached和wcf實現一個快取服務快取
- 這幾個關於Spring 依賴注入的問題你清楚嗎?Spring依賴注入
- 關於spring框架中的事務問題(急)Spring框架
- 關於unity專案匯出iOS工程的問題UnityiOS
- 關於整合SSH,重新發布專案的問題
- Elasticsearch中關於transform的一個問題分析ElasticsearchORM
- 一個內建於專案的分散式快取服務分散式快取
- 關於SpringBoot bean無法注入的問題(與檔案包位置有關)Spring BootBean
- 專案整合seata和mybatis-plus衝突問題解決方案:(分頁外掛失效, 自動填充失效, 自己注入的id生成器失效 找不到mapper檔案解決方案)MyBatisAPP
- 在Vue 專案 webpack 打包中關於 背景圖片的路徑問題VueWeb
- 關於在專案中Weblogic與Tuxedo整合的方案問題請教WebUX
- 專案化管理顧問服務