2016-07-05 2 views
0
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 
} 

Я пишу метод, возвращающий экземпляр, если он равен нулю или не связан. Как проверить, все ли подключено?Golang: Как проверить, подключен ли сеанс/отключен

+1

Нет связи, которую вы можете проверить. 'Session' - просто причудливое слово для общей конфигурации в AWS SDk. – Danilo

+0

Так он отключится? Я пытаюсь использовать длинный опрос, поэтому мне нужно использовать этот цикл 'svc' или повторно. –

+1

Это не имеет ничего общего с созданием структуры sqsSQS. При длительном опросе клиент будет ждать указанное время (максимум 20 секунд в SQS) для возврата сообщения. Функция func 'func (* SQS) ReceiveMessage' либо вернется через указанное время, либо если сообщение станет доступным – Danilo

ответ

1

Моим решением для этого было вставить сообщение в очередь с легко выбранным значением после стольких итераций без получения сообщения. Истина заключалась в том, что у меня висела горутин, но я использовал это, чтобы исключить соединение 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 и написал его в журнал, а затем удалит его. Объекты сеанса и службы не предоставляют каких-либо других методов для проверки соединения, кроме того, используя их поддающимся проверке образом.

Смежные вопросы