Flink RMQSink写入RabbitMQ出现Connection数一直持续增加的问题

Flink RMQSink写入RabbitMQ出现Connection数一直持续增加的问题

因业务需求,Flink程序要往RabbitMQ中写数据。一开始使用自己开发环境下的RabbitM,那是非常的顺溜。到测试环境,就出问题了。在RabbitMQ的web ui页面,看到连接数猛的增加,而且一直不停。导致测试环境的RabbitMQ挂了。当时蒙圈啊,出啥问题了,这么严重。

经过一番排查对比。发现在RMQSink类中,在open()方法中,调用了一个方法setupQueue()

这个方法的实现:

/**
* Sets up the queue. The default implementation just declares the queue. The user may override
* this method to have a custom setup for the queue (i.e. binding the queue to an exchange or
* defining custom queue parameters)
*/
protected void setupQueue() throws IOException {
    if (queueName != null) {
    	channel.queueDeclare(queueName, false, false, false, null);
    }
}

如果队列名不为空,那么执行语句。这个queueDeclare()的第二个参数是durable。队列是否持久化。false为不支持。一般在我们写入RabbitMQ之前,RabbitMQ的对列已经创建好,有些会指定durable为true。这个时候就有问题了,因为RabbitMQ队列durable属性不同,就会一直去连接,直到RabbitM

### 节点订阅概念及其实现 #### 定义与基本原理 节点订阅是一种消息传递模式,在这种模式下,发布者发送的消息会被分发给所有感兴趣的接收方(即订阅者)。这一机制广泛应用于分布式系统中,用于解耦组件之间的通信。通过这种方式,可以有效地管理和传播信息而不必关心具体的目标对象。 #### 实现方式 一种常见的实现方法是利用消息队列服务作为中介来进行消息的转发。例如,RabbitMQ 或 Apache Kafka 这样的平台提供了强大的功能来支持发布-订阅模型[^3]: ```python import pika connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() # 声明交换机 channel.exchange_declare(exchange='logs', exchange_type='fanout') message = 'info: Hello World!' channel.basic_publish(exchange='logs', routing_key='', body=message) print(f" [x] Sent {message}") connection.close() ``` 上述代码展示了如何设置一个简单的Python程序向名为`logs`的扇形交换器广播日志记录。任何绑定到此交换器上的队列都将接收到该条目。 对于更复杂的应用场景,则可能涉及到主题匹配或者分区策略等高级特性。比如在Kafka环境中,生产者可以根据特定的主题名称将写入不同的topic;而消费者则可以选择监听感兴趣的一个或多个topics下的最新更新。 #### 应用场景 1. **微服务体系架构** 微服务之间往往存在大量的异步交互需求,采用节点订阅的方式能够简化跨服务间的通讯逻辑并提高系统的灵活性。 2. **物联网(IoT)设备监控** 当有大量的IoT终端接入网络时,中心服务器难以直接处理来自各个端点的据请求。此时借助于中间件完成事件驱动式的推送操作就显得尤为重要了。 3. **实时据分析管道构建** 如前所述,像Apache Flink这样的框架允许开发者创建复杂的流式计算作业链路,并且很容易集成进现有的基于订阅的通知体系里去[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值