Browse Source

Merge pull request #2012 from Dieterbe/publish-no-recurse

no unbound recursion in publish()
Torkel Ödegaard 10 years ago
parent
commit
a993bc1331
1 changed files with 14 additions and 13 deletions
  1. 14 13
      pkg/services/eventpublisher/eventpublisher.go

+ 14 - 13
pkg/services/eventpublisher/eventpublisher.go

@@ -109,25 +109,26 @@ func Setup() error {
 }
 
 func publish(routingKey string, msgString []byte) {
-	err := channel.Publish(
-		exchange,   //exchange
-		routingKey, // routing key
-		false,      // mandatory
-		false,      // immediate
-		amqp.Publishing{
-			ContentType: "application/json",
-			Body:        msgString,
-		},
-	)
-	if err != nil {
+	for {
+		err := channel.Publish(
+			exchange,   //exchange
+			routingKey, // routing key
+			false,      // mandatory
+			false,      // immediate
+			amqp.Publishing{
+				ContentType: "application/json",
+				Body:        msgString,
+			},
+		)
+		if err == nil {
+			return
+		}
 		// failures are most likely because the connection was lost.
 		// the connection will be re-established, so just keep
 		// retrying every 2seconds until we successfully publish.
 		time.Sleep(2 * time.Second)
 		fmt.Println("publish failed, retrying.")
-		publish(routingKey, msgString)
 	}
-	return
 }
 
 func eventListener(event interface{}) error {