我的RabbitMQ服务器中有大约30个不同的队列和大约90个消费者(因为一些队列需要更多的消费者才能完成消息)。 我注意到我的套接字描述符数量继续增加。有很多消息通过服务器几乎每秒传递120条消息。我想知道谁没有释放插座。工人们永远不会“停止”,所以我认为它是消息的制作者。
我正在使用Java Spring启动来创建消息并处理消息。
谁不放开插座?或者为什么他们只是不断增加?这是正常行为吗?
我在网上找到的文件很少,我应该看到什么。 每个同时发布和交付是否应该有1个套接字描述符?
我使用的RabbitMQ版本是3.5.7
修改
在启动服务器的大约一个小时内,套接字描述符计数显示大约500.它说有60k可用,所以我不需要很快重启它。我觉得不应该(接近)需要重新启动。
我只是通过查看RabbitMQ管理员来测量套接字计数,它会说出总套接字描述符的数量。
这是我的制作人之一,每10分钟就会调用一次。
public void checkDuplicates() {
List<Order> orders = orderService.findOpenOrders();
for (Order order : orders) {
duplicateCheckRabbitTemplate.convertAndSend(order.getId());
}
}
这是用于rabbittemplate的bean
@Bean(name="duplicateCheckRabbitTemplate")
public RabbitTemplate duplicateCheckRabbitTemplate() {
RabbitTemplate rt = new RabbitTemplate(connectionFactory());
rt.setRoutingKey("comp.duplicatecheck.order");
rt.setExchange("comp.exchange");
return rt;
}
这是消费者
@Override
public byte[] handleMessage(byte[] message) {
Long orderId = Long.parseLong(new String(message));
service.getOrderService().updateOrder(orderId);
return null;
}