RabbitMQ服务器中存在一种行为,即当达到水印值时,它将不接受后续连接/操作,直到重新平衡自身。RabbitMQ客户机在连接超时后发生这种情况时会优雅地获得超时,但我们使用的是Spring AMQP,它会继续挂起。
复制步骤
o创建RabbitMQ HA群集
o创建一个生成和使用消息的简单程序
o使RabbitMQ服务器在内存中达到高水印值,使其无法接受任何新连接或执行任何操作,例如10分钟
o创建Q,从发送消息
Spring二进制文件版本
a) 春兔-1.6.7。释放罐子
b)Spring芯-4.3.6。发布. jar
c) spring-amqp-1.6.7。释放罐子
我们也尝试升级到Spring Rabbit和AMQP 2.0.2版本,但没有帮助。
您没有描述什么是“RabbitMQ客户机”,但是javaamqp客户机默认使用经典套接字。因此,您应该获得与这两个客户端相同的行为(因为SpringAMQP使用该客户端)。也许您指的是其他语言客户端。
对于java
Socket
s,当连接被阻塞时,线程会卡在不能中断的套接字写入中,也不会超时。
要处理这种情况,必须使用4.0或更高版本的客户机并使用NIO。
下面是演示该技术的示例应用程序。
@SpringBootApplication
public class So48699178Application {
private static Logger logger = LoggerFactory.getLogger(So48699178Application.class);
public static void main(String[] args) {
SpringApplication.run(So48699178Application.class, args);
}
@Bean
public ApplicationRunner runner(RabbitTemplate template, CachingConnectionFactory ccf) {
ConnectionFactory cf = ccf.getRabbitConnectionFactory();
NioParams nioParams = new NioParams();
nioParams.setWriteEnqueuingTimeoutInMs(20_000);
cf.setNioParams(nioParams);
cf.useNio();
return args -> {
Message message = MessageBuilder.withBody(new byte[100_000])
.andProperties(MessagePropertiesBuilder.newInstance()
.setDeliveryMode(MessageDeliveryMode.NON_PERSISTENT)
.build())
.build();
while (true) {
try {
template.send("foo", message);
}
catch (Exception e) {
logger.info(e.getMessage());
}
}
};
}
@Bean
public Queue foo() {
return new Queue("foo");
}
}
和
2018-02-09 12:00:29.803信息9430---[main]com。实例SO48699178应用程序:java。木卫一。IOException:帧排队失败
2018-02-09 12:00:49.803信息9430---[main]com。实例SO48699178应用程序:java。木卫一。IOException:帧排队失败
2018-02-09 12:01:09.807信息9430---[main]com。实例SO48699178应用程序:java。木卫一。IOException:帧排队失败
投的是teg后台开发,4.6投递的,投太晚了做完测评一直没下文,昨天接到了面试,流到了pcg,部门是QQ,客户端开发 今天3点一面,全在问C++的基础知识: 1、面向对象 2、虚函数 3、栈和堆 4、哈希表的底层 5、红黑树 6、进程和线程 还有几个记不清了 另外手撕个快排。 大部分问题都回答出来了,快排也手撕出来了。 面了将近一个小时,刚看流程已经回到测评了。
面试官人非常非常好全程很和蔼,都是引导着问问题,全程40min -问项目,这里先省略了 -malloc跟new的区别 -深拷贝浅拷贝(这个没答上来) -虚函数 -HTTP协议 -智能指针 ... 啊我想不起来了欧买噶,主要还是围绕项目来的 -代码题:合并两个链表的排序 反问岗位职责,面试官告诉我他们用java比较多,然后我是C++,应该无了 人生第一次面试真的超级紧张,说话老是又急又慌的 但是面试
我们已经实现了Kerberos java客户端,它运行良好。然而,当kerberos票证过期时,Java客户端应用程序会在控制台中请求用户名,这反过来会使应用程序挂起。在SoapUI等工具中,我们观察到当Kerberos票证过期时,系统抛出未经授权的错误。我们希望实现类似的行为,即如果Kerberos票证过期,则应抛出未经授权的错误,而不是等待用户输入凭据。请帮忙。 为Kerberos测试设置客户
我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se
用时50分钟,汗流浃背,自己还是太菜了 1.拷打实习项目的难点 2.拷打实习项目中如何对sql进行优化(如何定位,有哪些策略,为什么最终选了这种策略,如何测量效果,最终效果提升了多少) 3.水平分库分表 vs. 垂直分库分表 4.为什么要用分库分表?什么情况下使用水平,什么情况下使用垂直 5.分布式id方案 6.如何保证id不重复 7.从移动端到后端发送请求全过程 8.给你52张牌,设计一个函数f
问题内容: 这是该问题的后续问题,在这里我问什么是Hiveserver 2旧版Java客户端API。如果您不需要更多背景信息,那么这个问题应该能够在没有背景的情况下得以解决。 找不到有关如何使用hiverserver2旧版api的任何文档,我将它们放在一起。我能找到的最佳参考是Apache JDBC实现 。 我针对使用以下代码创建的Hiverserver2实例运行此代码 调试时,我从不走线 客户端