AxonFramework,SpringBoot自動(dòng)配置

Axon支持的SpringBoot自動(dòng)配置是迄今為止開始配置Axon基礎(chǔ)設(shè)施組件最簡(jiǎn)單的選擇。只需添加axon-spring-boot-starter依賴性蚓挤,Axon會(huì)自動(dòng)配置基礎(chǔ)設(shè)施組件(命令總線灿意,事件總線)崇呵,以及運(yùn)行和儲(chǔ)存聚合和Saga所需的任何組件域慷。

根據(jù)在應(yīng)用程序上下文中的其他組件,如果他們?cè)趹?yīng)用程序上下文中不是已經(jīng)明確定義抵窒,Axon將定義某些組件李皇。這意味著只需要配置不同于默認(rèn)值的組件宙枷。

事件總線和事件存儲(chǔ)配置

如果JPA可用,事件存儲(chǔ)默認(rèn)使用JPA事件存儲(chǔ)引擎圃阳。這允許聚合的存儲(chǔ)使用事件溯源而無需任何明確的配置捍岳。
如果JPA不可用,Axon默認(rèn)使用SimpleEventBus页徐,這意味著你需要為每個(gè)聚合指定一個(gè)非事件溯源存儲(chǔ)庫变勇,或者在你的Spring配置中配置一個(gè)EventStorageEngine 贴唇。

配置一個(gè)不同的事件存儲(chǔ)引擎戳气,即使JPA在class path上,只需定義一個(gè)EventStorageEngine類型的bean (使用事件溯源)或EventBus(如果不需要事件溯源)麻捻。

命令總線配置

如果在應(yīng)用程序上下文中沒有顯式定義CommandBus實(shí)現(xiàn)贸毕,Axon會(huì)配置一個(gè)SimpleCommandBus夜赵。這個(gè)CommandBus將使用PlatformTransactionManager管理事務(wù)寇僧,如果它在上下文中可用。

如果只有CommandBus bean定義是一個(gè)DistributedCommandBus實(shí)現(xiàn)歌豺,Axon仍將配置一個(gè)CommandBus實(shí)現(xiàn)作為DistributedCommandBus本地segment心包。這個(gè)bean將獲取一個(gè)“l(fā)ocalSegment”限定符蟹腾。建議定義DistributedCommandBus為@Primary区宇,以便它優(yōu)先考慮依賴注入。

聚合配置

@Aggregate注解(在org.axonframework.spring.stereotype包中)觸發(fā)自動(dòng)配置炉爆,配置使用帶注解的類型的必要組件作為聚合 芬首。注意,只有聚合根需要注解郁稍。

Axon會(huì)用命令總線自動(dòng)注冊(cè)所有帶@CommandHandler注解的方法耀怜,并且如果不存在則建立一個(gè)存儲(chǔ)庫。

建立一個(gè)與默認(rèn)情況不同的存儲(chǔ)庫掰派,在應(yīng)用程序上下文中定義一個(gè)狈究。可選地亿眠,你可以定義要使用的存儲(chǔ)庫的名稱纳像,在@Aggregate上使用存儲(chǔ)庫屬性拯勉。如果沒有定義存儲(chǔ)庫屬性,Axon將嘗試以聚合的名稱使用存儲(chǔ)庫(第一個(gè)字符小寫)岔帽,后綴為存儲(chǔ)庫导绷。依此類推妥曲,一個(gè)MyAggregate類的類型,默認(rèn)的存儲(chǔ)庫名字叫myAggregateRepository褂萧。如果沒有找到那個(gè)名稱的bean葵萎,Axon將定義一個(gè)EventSourcingRepository(如果沒有EventStore可用其會(huì)失敗)。

Saga配置

基礎(chǔ)設(shè)施組件的配置操作的Saga是@Saga注解觸發(fā)的(在org.axonframework.spring.stereotype包中)谎痢。Axon會(huì)配置一個(gè)SagaManagert和SagaRepository。SagaRepository將在上下文中使用一個(gè)可用的SagaStore(如果找到JPA默認(rèn)為JPASagaStore)為實(shí)際Saga存儲(chǔ)掰烟。

為Saga使用不同的SagaStores纫骑,在每個(gè)@Saga注解的sagaStore屬性中九孩,提供要使用的SagaStore的bean名稱。
Saga將從應(yīng)用程序上下文中注入資源煤墙。注意宪拥,這并不意味著Spring-injecting用于注入這些資源她君。@Autowired和@javax.inject.Inject注解可用于標(biāo)定依賴關(guān)系缔刹,但它們由Axon通過尋找這些被注解的字段和方法來注入。構(gòu)造函數(shù)注入(還)不支持校镐。

事件處理(Event Handling)配置

默認(rèn)情況下鸟廓,所有單例Spring bean組件包含帶@EventHandler注解的方法,將訂閱一個(gè)事件處理器去接收事件消息發(fā)布到事件總線肝箱。

EventHandlingConfiguration bean稀蟋,在應(yīng)用程序上下文可用退客,有方法來調(diào)整事件處理程序的配置链嘀。有關(guān)詳細(xì)信息,請(qǐng)參閱配置API配置事件處理程序和事件處理器档玻。

更新事件處理(EventHandling)配置误趴,創(chuàng)建一個(gè)autowired方法,設(shè)置你想要的配置:

@Autowired
public void configure(EventHandlingConfiguration config) {
    config.usingTrackingProcessors(); // default all processors to tracking mode.
}

事件處理器((Event Processors)的某些方面也可以在application.properties中配置。

axon.eventhandling.processors["name"].mode=tracking
axon.eventhandling.processors["name"].source=eventBus

使用application.yml:

axon:
    eventhandling:
        processors:
            name:
                mode: tracking
                source: eventBus

源文件屬性指的是bean的名稱實(shí)現(xiàn)了SubscribableMessageSource或StreamableMessageSource枣申,名稱應(yīng)該被用來做上述處理器的事件源忠藤。源文件默認(rèn)事件總線或事件存儲(chǔ)在應(yīng)用程序上下文中定義模孩。

啟用AMQP

啟用AMQP支持贮缅,確保axon-amqp模塊在類路徑上,并且在應(yīng)用程序上下文中AMQP ConnectionFactory是可用的(例如通過引用spring-boot-starter-amqp)祭芦。
在應(yīng)用程序中轉(zhuǎn)發(fā)生成的事件到一個(gè)AMQP Channel龟劲,一行application.properties配置就夠了:

axon.amqp.exchange=ExchangeName

這將以給定的名稱自動(dòng)發(fā)送所有已經(jīng)發(fā)布的事件到AMQP Channel轴或。

默認(rèn)情況下照雁,發(fā)送時(shí)沒有使用AMQP事務(wù)饺蚊。這可以使用axon.amqp.transaction-mode屬性覆蓋,并設(shè)置它為事務(wù)或publisher-ack裕坊。

從隊(duì)列中接收事件籍凝,并在Axon應(yīng)用程序內(nèi)處理它們,你需要配置一個(gè)SpringAMQPMessageSource:

@Bean
public SpringAMQPMessageSource myQueueMessageSource(AMQPMessageConverter messageConverter) {
    return new SpringAMQPMessageSource(messageConverter) {

        @RabbitListener(queues = "myQueue")
        @Override
        public void onMessage(Message message, Channel channel) throws Exception {
            super.onMessage(message, channel);
        }
    };
}

然后配置一個(gè)處理器声诸,使用這個(gè)bean作為其消息來源:

axon.eventhandling.processors["name"].source=myQueueMessageSource

使用JGroups分發(fā)命令

進(jìn)行中…如果你不能等彼乌,添加一個(gè)依賴項(xiàng)到axon-spring-boot-starter-jgroups模塊囤攀。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宫纬,一起剝皮案震驚了整個(gè)濱河市漓骚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蝌蹂,老刑警劉巖孤个,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件齐鲤,死亡現(xiàn)場(chǎng)離奇詭異给郊,居然都是意外死亡淆九,警方通過查閱死者的電腦和手機(jī)炭庙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門焕蹄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嘲驾,你說我怎么就攤上這事辽故「睿” “怎么了症见?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵谋作,是天一觀的道長(zhǎng)芋肠。 經(jīng)常有香客問我,道長(zhǎng)遵蚜,這世上最難降的妖魔是什么帖池? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮吭净,結(jié)果婚禮上睡汹,老公的妹妹穿的比我還像新娘。我一直安慰自己寂殉,他們只是感情好囚巴,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著友扰,像睡著了一般彤叉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上村怪,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天兼呵,我揣著相機(jī)與錄音,去河邊找鬼。 笑死凌彬,一個(gè)胖子當(dāng)著我的面吹牛褐澎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播俭正,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了筐喳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤账锹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒸绩,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡窍育,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年恕齐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡巨缘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤沪停,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布鹃彻,位于F島的核電站育拨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尝盼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一凸舵、第九天 我趴在偏房一處隱蔽的房頂上張望渐苏。 院中可真熱鬧庄新,春花似錦出皇、人聲如沸纱注。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽葡盗。三九已至,卻和暖如春红且,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工庄呈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盒刚,地道東北人绿贞。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓吩愧,卻偏偏與公主長(zhǎng)得像甸怕,于是被迫代替她去往敵國(guó)和親温兼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理黔州,服務(wù)發(fā)現(xiàn)耍鬓,斷路器,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,811評(píng)論 6 342
  • spring官方文檔:http://docs.spring.io/spring/docs/current/spri...
    牛馬風(fēng)情閱讀 1,679評(píng)論 0 3
  • 眼看要過年了,這幾天在院里院外都能聞到肉香合冀,家家戶戶在為新年準(zhǔn)備美食各薇,或許是我們家不太講究项贺,也可能是我們這個(gè)地方發(fā)...
    新的自我閱讀 334評(píng)論 3 2
  • 說服力—理性因素 3張便簽: I:在匯報(bào)問題君躺、推銷產(chǎn)品或是重要談判之前,盡可能全面地考慮對(duì)方會(huì)產(chǎn)生的問題并給出合理...
    魏魏的琪琪閱讀 170評(píng)論 1 0