Curator 非同步獲取結果

2022-03-01 21:07:51 字數 1047 閱讀 4676

原聲的zookeeper 的crud api有同步和非同步之分,對於非同步api,需要傳遞asynccallback**。對於getdata,getchildren,exists這三個api,還可以設定watcher。這些功能在curator中是如何實現的?

在curator中,可以通過如下三種方式來非同步獲取結果:

1.inbackground()+curatorlistener

2.inbackground(new backgroundcallback()})

3.inbackground(newbackgroundcallback(){},executor)

以inbackground()+curatorlistener這種方式來使用非同步api,如下:

client.getcuratorlistenable().addlistener(new

curatorlistener()

else

if(event.gettype()==curatoreventtype.get_data)

else

if(event.gettype()==curatoreventtype.set_data)

else

if(event.gettype()==curatoreventtype.delete)

}});

接下來client的所有以inbackground()方式使用的api,其非同步處理結果都是通過這個curatorlistener來處理。

在第二中方式inbackground(backgroundcallback)中,如下:

client.create()

.creatingparentsifneeded()

.withprotection()

.withmode(createmode.ephemeral)

.inbackground(

newbackgroundcallback()}

} ).forpath("/francis/tmp/a","wbs".getbytes());

Curator使用 二 非同步呼叫

executorservice es executors.newfixedthreadpool 2 帶執行緒池的非同步介面 cc.create inbackground client,event system.out.println thread.currentthread getname even...

非同步記錄日誌 獲取非同步處理結果

1.場景 有事務的情況下,記錄將異常資訊記錄到異常表中 2.處理過程 2.1本來是加上never或者notsurport註解,然後在throw拋異常之前把異常資訊插入資料庫,但是未成功,拋異常時回滾 2.2finally中呼叫被 async註解的方法 2.3注意 這個帶 async註解的方法要放在其...

go 非同步結果

package main import context fmt time func add a,b int chan int a,b return c func main ctx,cancel 直接結算獲取結果 result add 1,2 對結果進行操作 fmt.println result 可以...