Я написал топологию шторма и задал номер своих рабочих 1. Итак, я думаю, что все его компоненты должны работать в одном процессе. И я хочу разделить общий объект между несколькими компонентами в топологии, поэтому я использую singleton pattern: 1, я инициализирую объект singleton, когда был открыт уникальный носик. 2, Затем я использую объект singleton в других компонентах, вызывая функцию getInstance().singleton pattern в штормовой топологии
Но я обнаружил, что получаю разные объекты между различными компонентами.
Спасибо за ваши ответы. Ключевой код задачи перечислены ниже: Код класса синглтон:
public class TraceApplicationContext {
private volatile static TraceApplicationContext instance = new TraceApplicationContext();
private TraceApplicationContext() {
}
public static TraceApplicationContext getInstance() {
return instance;
}
}
SpoutA код класса:
public class SpoutA extends BaseRichSpout {
public void open(Map map, TopologyContext topologyContext, SpoutOutputCollector spoutOutputCollector) {
TraceApplicationContext.getInstance().init();
}
}
Болта код:
public class BoltA extends BaseRichBolt {
private static JedisCluster jedisCluster = TraceApplicationContext.getInstance().getJedisCluster();
}
код BoltB :
public class BoltB extends BaseRichBolt {
private static JedisCluster jedisCluster = TraceApplicationContext.getInstance().getJedisCluster();
}
После инициализации одноэлементного объекта TraceApplicationContext в SpoutA я проверяю возврат объекта TraceApplicationContext.getInstance(). GetJedisCluster(), это не null. Но я проверяю его в BoltA и BoltB, объект, возвращаемый TraceApplicationContext.getInstance(). GetJedisCluster() имеет значение null.
У кого-нибудь была такая же проблема или вы знали, что не так с такой проблемой?
Пожалуйста, помогите! Спасибо!
Пожалуйста, покажите код, или мы не сможем помочь. – Dragondraikk
отправьте свой код. – Zealous
Я добавил код ключа, пожалуйста, помогите. Благодаря! – Snail