Die*_*olz 6 infinispan wildfly
我想使用两个 Wildfly 独立实例来使用复制的 Infinispan 缓存。我想在一个节点上插入一个值,我应该能够在另一个节点上读取它。
这是我尝试过的:
<subsystem xmlns="urn:jboss:domain:infinispan:4.0">
<cache-container name="monitor" default-cache="default">
<transport lock-timeout="60000"/>
<replicated-cache name="default" mode="SYNC">
<transaction mode="BATCH"/>
</replicated-cache>
</cache-container>
...
Run Code Online (Sandbox Code Playgroud)
2016-03-13 11:19:43,160 INFO [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (MSC service thread 1-1) ISPN000094: Received new cluster view for channel monitor: [wf1|5] (2) [wf1, wf2]
Run Code Online (Sandbox Code Playgroud)
@Singleton
@Startup
public class CacheWriter {
private final static Logger LOG = LoggerFactory.getLogger(CacheWriter.class);
@Resource(lookup = "java:jboss/infinispan/container/monitor")
private EmbeddedCacheManager cacheManager;
private Cache<String, String> cache;
@PostConstruct
public void init() {
cache = cacheManager.getCache();
LOG.info("Cache name: " + cache.getName());
}
@Schedule(hour = "*", minute = "*", second = "0", persistent = false)
public void createDateString() {
Long date = new Date().getTime();
updateCache("date", date.toString());
}
public void updateCache(String key, String value) {
if (cache.containsKey("date")) {
LOG.info("Update date value: " + value);
cache.put(key, value);
} else {
LOG.info("Create date value: " + value);
cache.put(key, value);
}
}
}
Run Code Online (Sandbox Code Playgroud)
@Singleton
@Startup
public class CacheReader {
private final static Logger LOG = LoggerFactory.getLogger(CacheReader.class);
@Resource(lookup = "java:jboss/infinispan/container/monitor")
private EmbeddedCacheManager cacheManager;
private Cache<String, String> cache;
@PostConstruct
public void init() {
cache = cacheManager.getCache();
LOG.info("Cache name: " + cache.getName());
}
@Schedule(hour = "*", minute = "*", second = "10", persistent = false)
public void readDateString() {
LOG.info("Cache size: " + cache.keySet().size());
if (cache.containsKey("date")) {
LOG.info("The date value is: " + cache.get("date"));
} else {
LOG.warn("No date value found");
}
}
}
Run Code Online (Sandbox Code Playgroud)
写入器上的值已插入,但读取器节点上没有缓存修改,缓存大小始终为 0。我尝试了 TCP 和 UDP 堆栈。我错过了什么?你能帮助我吗。
提前致谢。
尝试直接注入缓存引用(不通过 CacheManager 填充它)。据我了解,这是强制 infinispan 容器在新的 WildFly 10 中启动它的唯一方法。
@Resource(lookup = "java:jboss/infinispan/cache/monitor/default")
private Cache<String, String> cache;
Run Code Online (Sandbox Code Playgroud)
小心使用 JNDI 名称(默认名称)或在配置中显式指定它
| 归档时间: |
|
| 查看次数: |
8046 次 |
| 最近记录: |