Java RabbitMQ,为什么不';我的套接字描述符没有释放吗?
我的RabbitMQ服务器中有大约30个不同的队列和大约90个使用者(因为有些队列需要更多的使用者才能通过消息)。 我注意到我的套接字描述符计数继续增加。有大量的消息通过服务器传输,几乎总是每秒发送120条消息。我想知道谁没有松开插座。工人们从不“停止”,所以我认为这是信息的生产者 我使用JavaSpringBoot创建消息并处理消息 谁不放开插座?或者为什么它们只是不断增加?这是正常的行为吗 我在网上几乎找不到关于我“应该”看到什么的文档。 对于每个同时发布和传递,是否应该有一个套接字描述符 我使用的RabbitMQ版本是3.5.7 编辑 在启动服务器大约一小时内,套接字描述符计数显示大约500。它说有60k可用,所以我不需要很快重新启动它。我觉得它不应该(接近)需要重新启动 我通过查看RabbitMQ管理员来测量套接字计数,它表示套接字描述符的总数 这是我的一位制片人,每10分钟就会接到一次电话Java RabbitMQ,为什么不';我的套接字描述符没有释放吗?,java,spring-boot,rabbitmq,Java,Spring Boot,Rabbitmq,我的RabbitMQ服务器中有大约30个不同的队列和大约90个使用者(因为有些队列需要更多的使用者才能通过消息)。 我注意到我的套接字描述符计数继续增加。有大量的消息通过服务器传输,几乎总是每秒发送120条消息。我想知道谁没有松开插座。工人们从不“停止”,所以我认为这是信息的生产者 我使用JavaSpringBoot创建消息并处理消息 谁不放开插座?或者为什么它们只是不断增加?这是正常的行为吗 我在网上几乎找不到关于我“应该”看到什么的文档。 对于每个同时发布和传递,是否应该有一个套接字描述符
public void checkDuplicates() {
List<Order> orders = orderService.findOpenOrders();
for (Order order : orders) {
duplicateCheckRabbitTemplate.convertAndSend(order.getId());
}
}
这是消费者
@Override
public byte[] handleMessage(byte[] message) {
Long orderId = Long.parseLong(new String(message));
service.getOrderService().updateOrder(orderId);
return null;
}
听起来不正常。但是:增加多少/多快?如何测量套接字计数?您的发布代码在做什么,例如
rabbitmplate#someSendMethod
或其他什么?添加编辑以回答您的问题。谢谢
@Override
public byte[] handleMessage(byte[] message) {
Long orderId = Long.parseLong(new String(message));
service.getOrderService().updateOrder(orderId);
return null;
}