我有一个监听主题的类(TopicListenerImp),我想从remoteListen函数获取消息,并将其作为参数提供给其他服务类中的另一个非静态函数。
@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));
});
}
但我收到以下错误;
Caused by: org.apache.ignite.binary.BinaryObjectException: Failed to serialize object etc.
当我静态注入字段时,它起作用了。但是当我这样做时,IDE 会发出警告“不要从构造函数方法更新静态变量”。
潇潇雨雨
相关分类