amazon-web-services - 转到 AWS SQS SDK : How to check if session is connected/disconnected

标签 amazon-web-services go amazon-sqs

var svc *sqs.SQS = nil

func returnSvcInstance() *sqs.SQS{


                if svc == nil || condition (check if not connected) { //check if it is connected?

                    sess := session.New(&aws.Config{
                        Region : aws.String(REGION),
                        Credentials: CREDS,
                    })

                    svc = sqs.New(sess)     
                }

                return svc
}

我正在编写一个方法,如果实例为 nil 或未连接则返回实例。如何检查它是否仍然连接?

最佳答案

我的解决方案是在多次迭代后没有收到消息的情况下,将一条消息插入到队列中,该消息具有易于挑选的值。事实上,我挂了一个 goroutine,但我用它来排除 SQS 连接。

我称它为 pingcounter 并做了类似的事情:

pingCounter := 0
    for {
        if debug {
            log.Println("worker: Start polling")
        }
        if pingCounter > 9 {
            params := &sqs.SendMessageInput{
                QueueUrl: aws.String(queueName),
                MessageBody: aws.String("PING"),
            }
            _, err := svc.SendMessage(params)
            if awsErr, ok := err.(awserr.Error); ok {
                log.Println(awsErr.Message())
            } else {
                log.Println(err)
            }
...gather messsages and do stuff...
if not:
pingCounter++

我的工作人员代码获取任何充满 PING 的消息并将其写入日志,然后将其删除。除了以可验证的方式使用它们之外, session 和服务对象不提供任何其他方法来测试连接。

关于amazon-web-services - 转到 AWS SQS SDK : How to check if session is connected/disconnected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38196726/

相关文章:

amazon-web-services - Amazon EC2 是否允许安装工具?

amazon-web-services - 从 AWS S3 list 报告中排除对象

go - 关闭和发送到 channel 之间的竞争条件

go - net.IP 作为 golang 中的映射键类型?

node.js - 使用 AWS 无服务器和 NodeJS 在接收器 lambda 上未从 SQS 接收所有消息

python - 使用 SQS 撤销 Celery 任务

amazon-web-services - AWS cli 查询以使用特定源名称访问 cloudfront "Domain Name"

amazon-web-services - AWS Elasticache - 增加 memcached 项目大小限制

go - golang 的手册页?

spring - 如何在 Spring Cloud AWS SQS 中以编程方式设置消息处理程序?