在模拟网络连接失败几秒钟的情况下,尝试暂停HikariCP池时会引发异常。为什么泳池可以不可以暂停?有没有其他简单的方法来模拟丢失的网络连接(到本地主机上的MySQL服务器)?
配置:
final String configFile = "src/main/resources/db.properties";
HikariConfig config = new HikariConfig(configFile);
config.setRegisterMbeans(true);
config.setPoolName("hikari-pool-1");
ds = new HikariDataSource(config);
属性:
jdbcUrl=jdbc:mysql://localhost:3306/db?user=user&password=password
dataSource.prepStmtCacheSize=250
dataSource.prepStmtCacheSqlLimit=2048
dataSource.useServerPrepStmts=true
dataSource.useLocalSessionState=true
dataSource.useLocalTransactionState=true
dataSource.rewriteBatchedStatements=true
dataSource.cacheResultSetMetadata=true
dataSource.cacheServerConfiguration=true
dataSource.elideSetAutoCommits=true
dataSource.maintainTimeStats=false
JUnit:
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName poolName = new ObjectName("com.zaxxer.hikari:type=Pool (hikari-pool-1)");
HikariPoolMXBean poolProxy = JMX.newMXBeanProxy(mBeanServer, poolName, HikariPoolMXBean.class);
poolProxy.suspendPool();
例外
java.lang.IllegalStateException: hikari-pool-1 - is not suspendable
这些都是很棒的回答。不幸的是,暂停池并不是模拟网络中断的好方法。根据您使用的是Windows、Linux还是Mac,可能会有不同的选项。
在Linux上,模拟网络故障的最佳方法是启用/禁用防火墙规则,该规则会将流量丢弃(而不是拒绝)到MySQL端口
iptables -A INPUT -i lo -p tcp --dport 3306 -j DROP
并且禁用(移除块)将如下所示:
iptables -D INPUT -i lo -p tcp --dport 3306 -j DROP
默认情况下,不允许暂停池,您需要显式启用池暂停。
另请参阅留档:
❎allowpoolsuspension
该属性控制是否可以通过JMX暂停和恢复池。这对于某些故障转移自动化场景非常有用。当池挂起时,对< code>getConnection()的调用将不会超时,并将一直保持到池恢复。默认值:false
简而言之,补充:
config.setAllowPoolSuspension(true)
我想暂停Kafka听众。 我叫http://localhost:8080/pause暂停容器 我发送有关主题的数据。 消费者开始消费消息 我原以为消费者会被暂停,但Kafka主题的信息仍在阅读中。如何暂停消费者?我用的是2.5。0(Spring启动父级)
暂停脚本的当前线程。 #p::Pause ; 按一次 Win+P 会暂停脚本. 再按一次则取消暂停. Pause [, On|Off|Toggle, OperateOnUnderlyingThread?] 参数 On|Off|Toggle 如果为空或省略, 则它默认为 Toggle. 否则, 请指定下列单词的其中一个: Toggle:如果在当前线程下的潜在线程处于运行状态,则暂停当前线程,否则让潜
1.若要暂停训练,请按下该按钮。显示暂停。若要继续训练,请点击绿色箭头图标。 2.若要停止训练,在记录训练期间或处于暂停模式时长按该按钮三秒钟,直至计数器清零。或者您可以点击并按住显示屏上的红色停止按钮。 如果在暂停后停止训练,则暂停后经过的时间不包括在总训练时间内。
若要暂停训练 长按正面按钮 或 在训练视图中向右滑动,找出并轻触暂停图标。 通过向左滑动您可以在暂停模式中看到训练总结。 恢复暂停的训练 轻触绿色箭头图标。 停止训练 在训练期间或在暂停模式中,长按正面按钮直至绿色计时器一直倒数。 或 在暂停模式中,轻触并按住红色停止图标可结束记录。
1.若要暂停训练,请按“返回”按钮。显示“记录已暂停”。若要继续训练,请按“开始”。 2.若要停止训练,在训练记录或处于暂停模式时长按“返回”按钮三秒钟,直到显示“记录已结束”。 如果在暂停后停止训练,则暂停后经过的时间不包括在总训练时间内。
我现在正在用JavaFX制作一个游戏。我只是想知道如何才能暂停动画计时器。我按键盘上的一个键,计时器会暂停,如果再按一次,它会恢复。有可能这样做吗?提前谢了。 之后我再次尝试使用timer.stop()和timer.start(),但计时器只停止,再也不会启动。