小编jit*_*jit的帖子

条件@PostConstruct注释

我有时可能不需要根据通过JVM参数传递的值在启动时后构造bean.

我尝试了@Conditional注释,但它只适用于@Bean注释.

你以前尝试/需要这样的东西吗?

spring conditional javabeans postconstruct

6
推荐指数
1
解决办法
612
查看次数

kafka new producer无法在其中一个代理关闭后更新元数据

我有一个kafka环境,有2个经纪人和1个动物园管理员.

当我试图向kafka发送消息时,如果我停止代理1(这是领导者1),客户端会停止生成消息并给我以下错误,尽管代理2被选为主题和分区的新领导者.

org.apache.kafka.common.errors.TimeoutException:60000毫秒后无法更新元数据.

经过10分钟后,由于经纪人2是新的领导者,我希望生产者向经纪人2发送数据,但是由于给出了上述异常,它继续失败.lastRefreshMs和lastSuccessfullRefreshMs仍然相同,尽管metadataExpireMs对于生产者来说是300000.

我在生产者方面使用kafka new Producer实现.

似乎生成器启动时,它绑定到一个代理,如果该代理发生故障,它甚至不会尝试连接到集群中的另一个代理.

但我的期望是,如果经纪人倒闭,它应该直接检查可用的另一个经纪人的元数据并向他们发送数据.

顺便说一句,我的主题是4分区,复制因子为2.在有意义的情况下提供此信息.

配置参数.

{request.timeout.ms=30000, retry.backoff.ms=100, buffer.memory=33554432, ssl.truststore.password=null, batch.size=16384, ssl.keymanager.algorithm=SunX509, receive.buffer.bytes=32768, ssl.cipher.suites=null, ssl.key.password=null, sasl.kerberos.ticket.renew.jitter=0.05, ssl.provider=null, sasl.kerberos.service.name=null, max.in.flight.requests.per.connection=5, sasl.kerberos.ticket.renew.window.factor=0.8, bootstrap.servers=[10.201.83.166:9500, 10.201.83.167:9500], client.id=rest-interface, max.request.size=1048576, acks=1, linger.ms=0, sasl.kerberos.kinit.cmd=/usr/bin/kinit, ssl.enabled.protocols=[TLSv1.2, TLSv1.1, TLSv1], metadata.fetch.timeout.ms=60000, ssl.endpoint.identification.algorithm=null, ssl.keystore.location=null, value.serializer=class org.apache.kafka.common.serialization.ByteArraySerializer, ssl.truststore.location=null, ssl.keystore.password=null, key.serializer=class org.apache.kafka.common.serialization.ByteArraySerializer, block.on.buffer.full=false, metrics.sample.window.ms=30000, metadata.max.age.ms=300000, security.protocol=PLAINTEXT, ssl.protocol=TLS, sasl.kerberos.min.time.before.relogin=60000, timeout.ms=30000, connections.max.idle.ms=540000, ssl.trustmanager.algorithm=PKIX, metric.reporters=[], compression.type=none, ssl.truststore.type=JKS, max.block.ms=60000, retries=0, send.buffer.bytes=131072, partitioner.class=class org.apache.kafka.clients.producer.internals.DefaultPartitioner, reconnect.backoff.ms=50, metrics.num.samples=2, ssl.keystore.type=JKS}
Run Code Online (Sandbox Code Playgroud)

使用案例:

1-启动BR1和BR2生成数据(Leader为BR1)

2-停止BR2产生数据(罚款)

3-停止BR1(这意味着此时集群中没有活动的工作代理)然后启动BR2并生成数据(尽管领导者是BR2但是失败)

4-启动BR1生成数据(领导者仍然是BR2,但数据生成得很好)

5-停止BR2(现在BR1是领导者)

6-停止BR1(BR1仍是领先者)

7-启动BR1生成数据(消息再次生成)

如果生产商将最新的成功数据发送给BR1,然后所有经纪人都下降,那么生产商希望BR1再次起床,尽管BR2已经上升并且是新领导者.这是预期的行为吗?

apache-kafka kafka-producer-api

5
推荐指数
1
解决办法
2万
查看次数

在weblogic上升级jax-rs共享库

通常情况下的WebLogic 12c的犯规支持JAX-RS 2.0,但通过JAX-RS的帮助下共享库附带的WebLogic本身就可以JAX-RS版本升级为1.1至2.0.问题是库实现是jersey 2.5,它不能满足我的需求.我找到了一个关于在weblogic上升级球衣版本的链接,这看起来很复杂.用我的球衣版2.13替换球衣罐2.5是否足够?我还需要做其他事吗?

jax-rs jersey weblogic12c

4
推荐指数
1
解决办法
2660
查看次数