无法从 spring boot/integration 应用程序连接到 apache geode

Can't connect to apache geode from spring boot/integration application

我正在尝试使用 spring-geode-starter 和 spring-integration-gemfire 连接 apache geode 的本地实例。

在我的 application.yml:

spring:
   data:
      gemfire:
         name: server1
         locators: localhost[10334]
         pool:
            subscription-enabled: true
            locators: localhost[10334]
        
        

当应用程序启动时,日志报告我“运行 处于本地模式,因为没有指定定位器”。 我指定了定位器以简化从本地到生产环境的转换,因为 spring 检测 hyper-v 的 ip(geode 在 docker 下 - 所有端口都映射到本地机器上)。

日志中的属性很清楚:没有设置定位器。

2020-07-17 12:40:29.020  INFO 32928 --- [           main] o.a.g.internal.logging.LoggingSession    : Startup Configuration: ### GemFire Properties using default values ###
ack-severe-alert-threshold=0
ack-wait-threshold=15
archive-disk-space-limit=0
archive-file-size-limit=0
async-distribution-timeout=0
async-max-queue-size=8
async-queue-timeout=60000
bind-address=
cache-xml-file=cache.xml
cluster-configuration-dir=
cluster-ssl-ciphers=any
cluster-ssl-enabled=false
cluster-ssl-keystore=
cluster-ssl-keystore-password=
cluster-ssl-keystore-type=
cluster-ssl-protocols=any
cluster-ssl-require-authentication=true
cluster-ssl-truststore=
cluster-ssl-truststore-password=
conflate-events=server
conserve-sockets=true
delta-propagation=true
deploy-working-dir=C:\Users\c.marotta\Documents\WORKSPACE\poc-web30\spring-cloud-stream-idempotent\poc-kafka-stream-idempotent
disable-auto-reconnect=false
disable-jmx=false
disable-tcp=false
distributed-system-id=-1
distributed-transactions=false
durable-client-id=
durable-client-timeout=300
enable-cluster-configuration=true
enable-network-partition-detection=true
enable-time-statistics=false
enforce-unique-host=false
gateway-ssl-ciphers=any
gateway-ssl-enabled=false
gateway-ssl-keystore=
gateway-ssl-keystore-password=
gateway-ssl-keystore-type=
gateway-ssl-protocols=any
gateway-ssl-require-authentication=true
gateway-ssl-truststore=
gateway-ssl-truststore-password=
groups=
http-service-bind-address=
http-service-port=7070
http-service-ssl-ciphers=any
http-service-ssl-enabled=false
http-service-ssl-keystore=
http-service-ssl-keystore-password=
http-service-ssl-keystore-type=
http-service-ssl-protocols=any
http-service-ssl-require-authentication=false
http-service-ssl-truststore=
http-service-ssl-truststore-password=
jmx-manager=false
jmx-manager-access-file=
jmx-manager-bind-address=
jmx-manager-hostname-for-clients=
jmx-manager-http-port=7070
jmx-manager-password-file=
jmx-manager-port=1099
jmx-manager-ssl-ciphers=any
jmx-manager-ssl-enabled=false
jmx-manager-ssl-keystore=
jmx-manager-ssl-keystore-password=
jmx-manager-ssl-keystore-type=
jmx-manager-ssl-protocols=any
jmx-manager-ssl-require-authentication=true
jmx-manager-ssl-truststore=
jmx-manager-ssl-truststore-password=
jmx-manager-start=false
jmx-manager-update-rate=2000
load-cluster-configuration-from-dir=false
locator-wait-time=0
locators=
lock-memory=false
log-disk-space-limit=0
log-file=
log-file-size-limit=0
log-level=config
max-num-reconnect-tries=3
max-wait-time-reconnect=60000
mcast-address=239.192.81.1
mcast-flow-control=1048576, 0.25, 5000
mcast-port=0
mcast-recv-buffer-size=1048576
mcast-send-buffer-size=65535
mcast-ttl=32
member-timeout=5000
membership-port-range=41000-61000
memcached-bind-address=
memcached-port=0
memcached-protocol=ASCII
name=
off-heap-memory-size=
redis-bind-address=
redis-password=
redis-port=0
redundancy-zone=
remote-locators=
remove-unresponsive-client=false
roles=
security-client-accessor=
security-client-accessor-pp=
security-client-auth-init=
security-client-authenticator=
security-client-dhalgo=
security-log-file=
security-log-level=config
security-manager=
security-peer-auth-init=
security-peer-authenticator=
security-peer-verifymember-timeout=1000
security-post-processor=
security-udp-dhalgo=
serializable-object-filter=!*
server-bind-address=
server-ssl-ciphers=any
server-ssl-enabled=false
server-ssl-keystore=
server-ssl-keystore-password=
server-ssl-keystore-type=
server-ssl-protocols=any
server-ssl-require-authentication=true
server-ssl-truststore=
server-ssl-truststore-password=
socket-buffer-size=32768
socket-lease-time=60000
ssl-ciphers=any
ssl-cluster-alias=
ssl-default-alias=
ssl-enabled-components=
ssl-endpoint-identification-enabled=false
ssl-gateway-alias=
ssl-jmx-alias=
ssl-keystore=
ssl-keystore-password=
ssl-keystore-type=
ssl-locator-alias=
ssl-protocols=any
ssl-require-authentication=true
ssl-server-alias=
ssl-truststore=
ssl-truststore-password=
ssl-truststore-type=
ssl-use-default-context=false
ssl-web-alias=
ssl-web-require-authentication=false
start-dev-rest-api=false
start-locator=
statistic-archive-file=
statistic-sample-rate=1000
statistic-sampling-enabled=true
tcp-port=0
thread-monitor-enabled=true
thread-monitor-interval-ms=60000
thread-monitor-time-limit-ms=30000
udp-fragment-size=60000
udp-recv-buffer-size=1048576
udp-send-buffer-size=65535
use-cluster-configuration=true
user-command-packages=
validate-serializable-objects=false

而且我在开始时定义了这个class:

@Bean
ApplicationRunner runAdditionalClientCacheInitialization(GemFireCache gemfireCache) {

    return args -> {

        ClientCache clientCache = (ClientCache) gemfireCache;

        // perform additional ClientCache initialization as needed
    };
}

但是如果我尝试自动装配 ClientCache bean,它会失败。

当然,如果我在配置中尝试这个 class:

    cacheFactoryBean = new CacheFactoryBean();
    try {
        cache = (Cache) cacheFactoryBean.getObject();
    } catch (Exception e) {
        e.printStackTrace();
    }
    region = cache.getRegion("custom");
    

区域为空。

Application.java

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
    
    @Bean
    ApplicationRunner runAdditionalClientCacheInitialization(GemFireCache gemfireCache) {

        return args -> {

            ClientCache clientCache = (ClientCache) gemfireCache;

            // perform additional ClientCache initialization as needed
        };
    }
}
        

我刚刚在本地使用 spring-geode-starter:1.3.0.RELEASE 尝试了这种方法,它似乎工作得很好:

### Using non default ports to prevent the default pool from successfully connecting

    _________________________     __
   / _____/ ______/ ______/ /____/ /
  / /  __/ /___  /_____  / _____  / 
 / /__/ / ____/  _____/ / /    / /  
/______/_/      /______/_/    /_/    1.12.0

Monitor and Manage Apache Geode
gfsh>start locator --name=locator1 --port=10101
gfsh>start server --name=server1 --server-port=40405
gfsh>create region --name=TestRegion
gfsh>create region --name=TestRegion --type=REPLICATE
gfsh>put --key="Key1" --value="Value1" --region=/TestRegion
### Application
@SpringBootApplication
public class DemoApplication {

  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }

  @Bean
  ApplicationRunner runAdditionalClientCacheInitialization(GemFireCache gemfireCache) {

    return args -> {

      ClientCache clientCache = (ClientCache) gemfireCache;
      Region<String, String> clientRegion = clientCache.<String, String>createClientRegionFactory(ClientRegionShortcut.PROXY).create("TestRegion");
      System.out.println("############ KeySetOnServer:" + clientRegion.keySetOnServer());
    };
  }
}
### Output Log
2020-07-17 13:16:13.762  INFO 12080 --- [           main] o.a.g.internal.InternalDataSerializer    : initializing InternalDataSerializer with 4 services
2020-07-17 13:16:13.779  INFO 12080 --- [           main] org.apache.geode                         : [ThreadsMonitor] New Monitor object and process were created.

2020-07-17 13:16:13.794  INFO 12080 --- [    StatSampler] o.a.g.i.statistics.StatArchiveHandler    : Disabling statistic archival.
2020-07-17 13:16:13.866  INFO 12080 --- [           main] o.a.g.internal.cache.GemFireCacheImpl    : Running in client mode
2020-07-17 13:16:14.041  INFO 12080 --- [           main] o.a.g.internal.cache.GemFireCacheImpl    : Initialized cache service org.apache.geode.cache.lucene.internal.LuceneServiceImpl
2020-07-17 13:16:14.044  INFO 12080 --- [           main] o.a.g.internal.cache.GemFireCacheImpl    : Initialized cache service org.apache.geode.cache.query.internal.QueryConfigurationServiceImpl
2020-07-17 13:16:14.415  INFO 12080 --- [           main] o.a.g.internal.cache.GemFireCacheImpl    : Initialized cache service org.apache.geode.management.internal.cli.remote.OnlineCommandProcessor
2020-07-17 13:16:14.422  INFO 12080 --- [           main] o.s.d.g.client.ClientCacheFactoryBean    : Connected to Distributed System [server1] as Member [192.168.0.73(server1:12080:loner):0:c619b45c:server1] in Group(s) [[]] with Role(s) [[]] on Host [192.168.0.73] having PID [12080]
2020-07-17 13:16:14.422  INFO 12080 --- [           main] o.s.d.g.client.ClientCacheFactoryBean    : Created new Apache Geode version [1.12.0] Cache [server1]
2020-07-17 13:16:14.602  INFO 12080 --- [           main] o.a.g.c.c.i.AutoConnectionSourceImpl     : AutoConnectionSource UpdateLocatorListTask started with interval=10000 ms.
2020-07-17 13:16:14.615  INFO 12080 --- [Timer-DEFAULT-2] o.a.g.c.c.i.AutoConnectionSourceImpl     : AutoConnectionSource discovered new locators [/192.168.0.73:10101]
2020-07-17 13:16:14.618  INFO 12080 --- [Timer-DEFAULT-3] org.apache.geode                         : Updating membership port.  Port changed from 0 to 55174.  ID is now 192.168.0.73(server1:12080:loner):0:c619b45c:server1
2020-07-17 13:16:14.659  INFO 12080 --- [           main] o.a.g.cache.client.internal.PoolImpl     : Pool DEFAULT started with multiuser-authentication=false
2020-07-17 13:16:14.664  INFO 12080 --- [1001 port 40405] o.a.g.i.c.t.sockets.CacheClientUpdater   : Cache Client Updater Thread  on 192.168.0.73(server1:11423)<v1>:41001 port 40405 (192.168.0.73:40405) : ready to process messages.
2020-07-17 13:16:14.735  INFO 12080 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 3.417 seconds (JVM running for 3.936)
############ KeySetOnServer:[Key1]
2020-07-17 13:16:14.769  INFO 12080 --- [m shutdown hook] o.a.g.d.i.InternalDistributedSystem      : VM is exiting - shutting down distributed system
2020-07-17 13:16:14.770  INFO 12080 --- [m shutdown hook] o.a.g.internal.cache.GemFireCacheImpl    : GemFireCache[id = 1681351053; isClosing = true; isShutDownAll = false; created = Fri Jul 17 13:16:13 IST 2020; server = false; copyOnRead = false; lockLease = 120; lockTimeout = 60]: Now closing.
2020-07-17 13:16:14.788  INFO 12080 --- [m shutdown hook] o.a.g.cache.client.internal.PoolImpl     : Destroying connection pool DEFAULT
### application.yml
spring:
  data:
    gemfire:
      name: server1
      locators: localhost[10334]
      pool:
        subscription-enabled: true
        locators: localhost[10101]

您使用的是什么版本?。 干杯。