91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Dactor的配置和API說明

發布時間:2021-08-31 17:11:09 來源:億速云 閱讀:177 作者:chen 欄目:編程語言

這篇文章主要講解了“Dactor的配置和API說明”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Dactor的配置和API說明”吧!

# **配置和API說明**  

## 配置說明

 通過在xml中的Step實現內部Actor之間的流程跳轉

 在配置文件中包含

 Actor、chain、和global配置 。

 程序整個執行順序為根據交易碼找到對應的Actor,然后執行按照chain->parent->selft的順序進行執行。  

 chain執行到placeholder處,調用parent交易繼續執行,在parent交易中執行到placeholder交易后,調用selft自身交易繼續執行。

 自身交易執行完畢,彈出parent的placeholder處交易繼續執行.parent執行完畢,彈出chain中代碼繼續執行。

 global配置如下

``` 

  <actor:global id="actorglobal">

         <actor:param name="beginBeanId" value="beginActor"/>

         <actor:param name="endBeanId" value="endActor"/>

   </actor:global>

```   

beginBeanId為默認的開始Actor,value中的值是在Spring中對應的beanName,程序初始化時將會取得此值,對未指定beginBeanId或者endBeanId的Actor初始化全局配置。  

beginActor和endActor都需要繼承Actor接口。

actor配置如下

```   

    <actor:actor id="actorhttpcore"   parent="chainparent" chain="unLoginChain"  handleException="true"  endBeanId="FinishActor" >

        <actor:steps>

            <actor:step xpoint="" ypont="" fromBeanId="beginActor"  conditon="" toBeanId="placeholderActor"/>

            <actor:step xpoint="" ypont=""  fromBeanId="placeholderActor" conditon="context._SUFFIX=='json'"  toBeanId="JsonViewResolverActor"/>

            <actor:step xpoint="" ypont=""  fromBeanId="placeholderActor" conditon="exception==null" toBeanId="ViewResolveActor"/>

            <actor:step xpoint="" ypont=""   fromBeanId="placeholderActor" conditon="exception!=null"  toBeanId="ErrorViewResolveActor"/>

        </actor:steps>

             <results>

                    <result name="success">htmlstream:</result>

             </results>

    </actor:actor>

 ```

 屬性handleException如果不設置的話,遇到異常,程序將會認為子類中已經執行完畢,跳到parent中PlaceHolder處執行。設置為true,將不會直接跳轉到parent中,由子類進行自我處理。  

 parent和chain為調用具體交易前需要調用的公共交易,由于大部分交易都有通用的前置交易和統一的后置交易。通過設置parent或者chain,可提高代碼復用度。  

 fromBeanId和toBeanId配置的是Actor或者實現Actor接口的beanId。

 parent和chain中的ref都需要是Actor.  

 results中可定義返回的state和需要處理的viewActor

chain配置

 ```

   <actor:chain id="unLoginChain">

        <actor:before>

            <actor:ref bean="actorhttpcore"></actor:ref>

        </actor:before>

    </actor:chain>

```  

chain可直觀展現Actor調用順序.    

在chain中可順序并列多個parent類。每個parent中的Step都需要有placeHolderActor,以調用子類。      

依次執行before中的交易,再執行自身交易。自身交易執行完畢,再依次回溯責任鏈中的每個交易,直到無可用交易。  

## 重要類方法說明

cn.ymotel.dactor.core.MessageDispatcher是交易流轉的核心接口類   

    public void startMessage(Message message, ActorTransactionCfg actorcfg, boolean blocked) throws Exception  

方法,用于開始整個流程,其中message需要在執行前進行構造,actorcfg可通過spring的getBean方法得到為Actor對象,如下  

```

<actor id="randomTxt1" parent="randomTxt" beginBeanId="randomTxtActor">

    </actor>

```

    通過getBean('randomTxt1')即可得到ActorTransactionCfg對象。  

    blocked為是否阻塞,一般在交易初次放入隊列是為false,表示如果隊列滿,則直接扔給客戶端進行處理。為true則一般為內部交易,必須提交給隊列進行處理。

  sendMessage方法內部調用,用于將處理完畢的Message重新放入隊列,繼續下一步流程。

 cn.ymotel.dactor.core.disruptor.MessageRingBufferDispatcher是MessageDispatcher的接口實現類。,在啟動Spring是需要在配置中加上

 ```

  <bean id="MessageRingBufferDispatcher" class="cn.ymotel.dactor.core.disruptor.MessageRingBufferDispatcher">

    </bean>

 ```   

 MessageRingBufferDispatcher的strategy、bufferSize、threadNumber為三個可設置屬性.正常情況下使用默認設置即可。  

 strategy默認使用ringBuffer的BlockingWaitStrategy策略進行調度,如果交易量比較大,可調整此策略。  

 bufferSize默認使用1024。   

 threadNumber默認使用CPU個數的線程數。   

 ## 其他默認Actor說明

 cn.ymotel.dactor.message.Message.Actor,所有需要在執行的交易都必須繼承此接口。   

 public Object HandleMessage(Message message) throws Exception;程序通過調用HandleMessage對象,如果返回的不是message對象或者為NULL,則認為此交易是異步執行,不再自行調度。由異步交易在收到請求后,自己調用將Message再此放入隊列中。  

 cn.ymotel.dactor.action.PlaceholderActor 交易為特殊交易,用來將當前隊列暫存,并調用子交易。  

 cn.ymotel.dactor.action.BeginActor 為Actor中step的默認開始交易。  

 cn.ymotel.dactor.action.EndActor 為Actor中step的默認結束交易。

 cn.ymotel.dactor.action.JsonViewResolverActor為需要返回Json的J2EE view

  cn.ymotel.dactor.action.ViewResolveActor為需要返回J2EE view的統一處理Actor  

  cn.ymotel.dactor.action.httpclient.HttpClientActor 提供的異步調用httpClient的Actor  

cn.ymotel.dactor.action.netty.aysnsocket.TcpClientActor 提供的異步調用netty的Actor  

 ## 交易流程舉例說明

 ```

   <actor:actor id="actorhttpcore" handleException="true"  endBeanId="FinishActor" >

         <actor:steps>

             <actor:step xpoint="" ypont="" fromBeanId="beginActor"  conditon="" toBeanId="placeholderActor"/>

             <actor:step xpoint="" ypont=""  fromBeanId="placeholderActor" conditon="context._SUFFIX=='json'"  toBeanId="JsonViewResolverActor"/>

             <actor:step xpoint="" ypont=""  fromBeanId="placeholderActor" conditon="exception==null" toBeanId="ViewResolveActor"/>

             <actor:step xpoint="" ypont=""   fromBeanId="placeholderActor" conditon="exception!=null"  toBeanId="ErrorViewResolveActor"/>

         </actor:steps>

     </actor:actor>

  <actor id="randomTxt2" parent="actorhttpcore" beginBeanId="randomTxtActor">

     </actor>

 ```

 以上交易的交易流程圖如下

 Dactor的配置和API說明

以上的完整例子都可在example中得到

感謝各位的閱讀,以上就是“Dactor的配置和API說明”的內容了,經過本文的學習后,相信大家對Dactor的配置和API說明這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东宁县| 衡东县| 固阳县| 金昌市| 吉水县| 林口县| 黄陵县| 平舆县| 丰台区| 浦北县| 晋城| 遂川县| 象州县| 汪清县| 若尔盖县| 法库县| 冕宁县| 甘德县| 同江市| 固始县| 普定县| 灵川县| 习水县| 岚皋县| 盈江县| 井研县| 大渡口区| 和政县| 左贡县| 米林县| 昌宁县| 凭祥市| 庆元县| 长阳| 乐东| 洛宁县| 密山市| 渭南市| 芦溪县| 永寿县| 平顺县|