Spring 集成:无法与动物园管理员进行领导选举
Spring Integration: Unable to do leader election with zoo keeper
我正在尝试在我的应用程序的容器中选出领导者来执行某些任务
我写了下面的代码,
@Configuration
@EnableIntegration
public class LeaderConfiguration {
@Bean
public LeaderInitiatorFactoryBean leaderInitiator(CuratorFramework client) {
return new LeaderInitiatorFactoryBean()
.setClient(client)
.setPath("/app/test/")
.setRole("app");
}
@Bean
@Primary
CuratorFrameworkFactoryBean curatorFramework() {
return new CuratorFrameworkFactoryBean("127.0.0.1:2181");
}
@Bean
@InboundChannelAdapter(channel = "attributeChannel", autoStartup = "false", poller = @Poller(fixedDelay = "100"))
@Role("app")
public Supplier<String> inboundChannelAdapter() {
return () -> "app";
}
@Bean("attributeChannel")
public MessageChannel attributeChannel() {
return new DirectChannel();
}
@ServiceActivator(inputChannel = "attributeChannel", autoStartup = "false")
public void listen(Object a) {
System.out.println("I am leader");
}
}
我有以下依赖关系
plugins {
id 'org.springframework.boot' version '2.1.4.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
group = 'com.example.zookeeper'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-integration'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
// https://mvnrepository.com/artifact/org.springframework.integration/spring-integration-zookeeper
compile group: 'org.springframework.integration', name: 'spring-integration-zookeeper', version: '5.1.4.RELEASE'
// https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-zookeeper-core
//compile group: 'org.springframework.cloud', name: 'spring-cloud-zookeeper-core', version: '2.1.0.RELEASE'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
我的本地动物园管理员已经启动 运行。
我总是报错,可能是我的连接设置有误
019-05-02 19:08:57.178 INFO 38709 --- [ain-EventThread] o.a.c.f.state.ConnectionStateManager : State change: RECONNECTED
2019-05-02 19:08:57.180 INFO 38709 --- [127.0.0.1:2181)] org.apache.zookeeper.ClientCnxn : Unable to read additional data from server sessionid 0x10006f79d980001, likely server has closed socket, closing socket connection and attempting reconnect
2019-05-02 19:08:57.285 INFO 38709 --- [ain-EventThread] o.a.c.f.state.ConnectionStateManager : State change: SUSPENDED
2019-05-02 19:08:58.808 INFO 38709 --- [127.0.0.1:2181)] org.apache.zookeeper.ClientCnxn : Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
2019-05-02 19:08:58.808 INFO 38709 --- [127.0.0.1:2181)] org.apache.zookeeper.ClientCnxn : Socket connection established, initiating session, client: /127.0.0.1:56077, server: 127.0.0.1/127.0.0.1:2181
2019-05-02 19:08:58.810 INFO 38709 --- [127.0.0.1:2181)] org.apache.zookeeper.ClientCnxn : Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x10006f79d980001, negotiated timeout = 40000
2019-05-02 19:08:58.810 INFO 38709 --- [ain-EventThread] o.a.c.f.state.ConnectionStateManager : State change: RECONNECTED
2019-05-02 19:08:58.816 WARN 38709 --- [127.0.0.1:2181)] org.apache.zookeeper.ClientCnxn : Session 0x10006f79d980001 for server 127.0.0.1/127.0.0.1:2181, unexpected error, closing socket connection and attempting reconnect
java.io.IOException: Xid out of order. Got Xid 21 with err -6 expected Xid 20 for a packet with details: clientPath:/app/test/app serverPath:/app/test/app finished:false header:: 20,12 replyHeader:: 0,0,-4 request:: '/app/test/app,F response:: v{}
我是不是做错了什么。
看起来 compile("org.apache.curator:curator-recipes:4.2.0")
附带 org.apache.zookeeper:zookeeper:3.5.4-beta
以使其与 Zookeeper 一起工作 3.4.x
我们需要遵循 Curator Framework 的说明:https://curator.apache.org/zk-compatibility.html
Curator 4.0 supports ZooKeeper 3.4.x ensembles in a soft-compatibility mode. To use this mode you must exclude ZooKeeper when adding Curator to your dependency management tool.
compile('org.springframework.integration:spring-integration-zookeeper') {
exclude group: 'org.apache.zookeeper', module: 'zookeeper'
}
因此,包含 3.4.14
版本的 zookeeper
依赖项。
嗯。并且看起来您还需要将其从 spring-cloud-zookeeper-core
依赖项中排除。
我正在尝试在我的应用程序的容器中选出领导者来执行某些任务
我写了下面的代码,
@Configuration
@EnableIntegration
public class LeaderConfiguration {
@Bean
public LeaderInitiatorFactoryBean leaderInitiator(CuratorFramework client) {
return new LeaderInitiatorFactoryBean()
.setClient(client)
.setPath("/app/test/")
.setRole("app");
}
@Bean
@Primary
CuratorFrameworkFactoryBean curatorFramework() {
return new CuratorFrameworkFactoryBean("127.0.0.1:2181");
}
@Bean
@InboundChannelAdapter(channel = "attributeChannel", autoStartup = "false", poller = @Poller(fixedDelay = "100"))
@Role("app")
public Supplier<String> inboundChannelAdapter() {
return () -> "app";
}
@Bean("attributeChannel")
public MessageChannel attributeChannel() {
return new DirectChannel();
}
@ServiceActivator(inputChannel = "attributeChannel", autoStartup = "false")
public void listen(Object a) {
System.out.println("I am leader");
}
}
我有以下依赖关系
plugins {
id 'org.springframework.boot' version '2.1.4.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
group = 'com.example.zookeeper'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-integration'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
// https://mvnrepository.com/artifact/org.springframework.integration/spring-integration-zookeeper
compile group: 'org.springframework.integration', name: 'spring-integration-zookeeper', version: '5.1.4.RELEASE'
// https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-zookeeper-core
//compile group: 'org.springframework.cloud', name: 'spring-cloud-zookeeper-core', version: '2.1.0.RELEASE'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
我的本地动物园管理员已经启动 运行。
我总是报错,可能是我的连接设置有误
019-05-02 19:08:57.178 INFO 38709 --- [ain-EventThread] o.a.c.f.state.ConnectionStateManager : State change: RECONNECTED
2019-05-02 19:08:57.180 INFO 38709 --- [127.0.0.1:2181)] org.apache.zookeeper.ClientCnxn : Unable to read additional data from server sessionid 0x10006f79d980001, likely server has closed socket, closing socket connection and attempting reconnect
2019-05-02 19:08:57.285 INFO 38709 --- [ain-EventThread] o.a.c.f.state.ConnectionStateManager : State change: SUSPENDED
2019-05-02 19:08:58.808 INFO 38709 --- [127.0.0.1:2181)] org.apache.zookeeper.ClientCnxn : Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
2019-05-02 19:08:58.808 INFO 38709 --- [127.0.0.1:2181)] org.apache.zookeeper.ClientCnxn : Socket connection established, initiating session, client: /127.0.0.1:56077, server: 127.0.0.1/127.0.0.1:2181
2019-05-02 19:08:58.810 INFO 38709 --- [127.0.0.1:2181)] org.apache.zookeeper.ClientCnxn : Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x10006f79d980001, negotiated timeout = 40000
2019-05-02 19:08:58.810 INFO 38709 --- [ain-EventThread] o.a.c.f.state.ConnectionStateManager : State change: RECONNECTED
2019-05-02 19:08:58.816 WARN 38709 --- [127.0.0.1:2181)] org.apache.zookeeper.ClientCnxn : Session 0x10006f79d980001 for server 127.0.0.1/127.0.0.1:2181, unexpected error, closing socket connection and attempting reconnect
java.io.IOException: Xid out of order. Got Xid 21 with err -6 expected Xid 20 for a packet with details: clientPath:/app/test/app serverPath:/app/test/app finished:false header:: 20,12 replyHeader:: 0,0,-4 request:: '/app/test/app,F response:: v{}
我是不是做错了什么。
看起来 compile("org.apache.curator:curator-recipes:4.2.0")
附带 org.apache.zookeeper:zookeeper:3.5.4-beta
以使其与 Zookeeper 一起工作 3.4.x
我们需要遵循 Curator Framework 的说明:https://curator.apache.org/zk-compatibility.html
Curator 4.0 supports ZooKeeper 3.4.x ensembles in a soft-compatibility mode. To use this mode you must exclude ZooKeeper when adding Curator to your dependency management tool.
compile('org.springframework.integration:spring-integration-zookeeper') {
exclude group: 'org.apache.zookeeper', module: 'zookeeper'
}
因此,包含 3.4.14
版本的 zookeeper
依赖项。
嗯。并且看起来您还需要将其从 spring-cloud-zookeeper-core
依赖项中排除。