事情是这样的,我正在创建一个sqs连接。我使用相同的连接来创建消费者,以侦听两个不同的队列(q1、q2)。
启用和禁用队列由应用程序的管理用户通过ui处理。
因此,每当我禁用q1消费者时,我就不应该关闭连接,并且只有当q1和q2消费者都禁用时才关闭连接,我无法编写复杂的代码来检查这两个消费者是否都禁用了。
是否有方法检查打开的SQS连接的空闲时间。
或
我想知道保持SQS连接一直开放的成本
或
打开两个不同的连接怎么样
下面是我如何创建连接的
SQSConnectionFactory connectionFactory = new SQSConnectionFactory(
new ProviderConfiguration(), ((AmazonSQSClientBuilder)
AmazonSQSClientBuilder.standard().withRegion(sqsRegion)).
withCredentials(
_getCredentialsProvider(awsSecretKey, awsAccessKey)));
_connection = connectionFactory.createConnection();
1条答案
按热度按时间bgtovc5b1#
整个问题,在这里,似乎是以这个不幸的名字为前提的
SQSConnectionFactory
,这不是真正的情况。更准确的名字可能是SQSConfiguredClientFactory
.没有一个
createConnection
方法建立与sqs的物理连接https://github.com/awslabs/amazon-sqs-java-messaging-lib/blob/master/src/main/java/com/amazon/sqs/javamessaging/sqsconnectionfactory.java
…因为sqs实际上并不使用已建立/连续的“连接”
服务api交互通过https进行,与其他方法(例如。
receiveMessage(queueUrl)
)我需要他们。关于你的问题:1。在任何有意义的/相关的意义上,连接都没有“打开”,因此没有什么需要检查的;2.唯一的成本来自实际使用连接发送/接收/删除消息;和3。出于上述原因,这似乎是不必要的。