RabbitMQ,我的套接字描述符为什么不释放?

时间:2016-06-30 20:07:37

标签: java spring-boot rabbitmq

我的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;
}

0 个答案:

没有答案