第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在 ignite-messaging lambda 函數(shù)的 Remotelisten

如何在 ignite-messaging lambda 函數(shù)的 Remotelisten

慕田峪4524236 2023-10-13 10:05:50
我有一個(gè)監(jiān)聽(tīng)主題的類(TopicListenerImp),我想從remoteListen函數(shù)獲取消息,并將其作為參數(shù)提供給其他服務(wù)類中的另一個(gè)非靜態(tài)函數(shù)。     @Component    public class TopicListenerImp implements TopicListener {      private NotificationService notificationService;      private SubscriptionRepository subscriptionRepository;      private SubscriptionRules subscriptionRules;      private NFInstancesService nfInstancesService;      private Ignite ignite;      public TopicListenerImp(          SubscriptionRules subscriptionRules,          NotificationService notificationService,          SubscriptionRepository subscriptionRepository,          Ignite ignite,          NFInstancesService nfInstancesService) {        this.subscriptionRules = subscriptionRules;        this.notificationService = notificationService;        this.subscriptionRepository = subscriptionRepository;        this.nfInstancesService = nfInstancesService;        this.ignite = ignite;      }      @Bean      public void startTopicListening() {        IgniteMessaging rmtMsg = ignite.message(ignite.cluster().forLocal());        rmtMsg.remoteListen(            "SUSPEND",            (nodeId, msg) -> {              notifyIfSubscriptionExist((String) msg); //here where I used the message that comes from topic              return true;             });      }      public void notifyIfSubscriptionExist(String msg) {        List<String> nfInstanceIdSubscriptionId = parseNfInstanceIdSubscriptionId(msg);        Optional<NFProfile> nfProfile =            nfInstancesService.getNFInstance(nfInstanceIdSubscriptionId.get(0));        Optional<SubscriptionData> subscriptionDataOptional =            subscriptionRepository.getSubscriptionData(nfInstanceIdSubscriptionId.get(1));            });      }但我收到以下錯(cuò)誤;    Caused by: org.apache.ignite.binary.BinaryObjectException: Failed to serialize object etc.當(dāng)我靜態(tài)注入字段時(shí),它起作用了。但是當(dāng)我這樣做時(shí),IDE 會(huì)發(fā)出警告“不要從構(gòu)造函數(shù)方法更新靜態(tài)變量”。
查看完整描述

1 回答

?
瀟瀟雨雨

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊

RemoteListen采用一個(gè)謂詞,該謂詞將被序列化并通過(guò)網(wǎng)絡(luò)發(fā)送到遠(yuǎn)程節(jié)點(diǎn)。當(dāng)您在其實(shí)現(xiàn)中調(diào)用非靜態(tài)方法時(shí),它會(huì)使整個(gè)this對(duì)象被序列化。它可能會(huì)導(dǎo)致意外行為和通過(guò)網(wǎng)絡(luò)發(fā)送大量數(shù)據(jù)。

一般來(lái)說(shuō),不建議通過(guò)網(wǎng)絡(luò)發(fā)送 lambda 函數(shù),因?yàn)樗鼈兊男蛄谢蕾囉?VM,并且無(wú)法讓您控制實(shí)際發(fā)送的內(nèi)容。如果您想通過(guò)網(wǎng)絡(luò)發(fā)送謂詞,則創(chuàng)建一個(gè)實(shí)現(xiàn)謂詞接口的類并使用該類的實(shí)例。

如果不需要集群中的所有節(jié)點(diǎn)都訂閱該主題,那么localListen就足夠了。


查看完整回答
反對(duì) 回復(fù) 2023-10-13
  • 1 回答
  • 0 關(guān)注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)