Skip to content

Commit

Permalink
add peek and pop operations
Browse files Browse the repository at this point in the history
  • Loading branch information
Kyl Wellman committed Jan 6, 2016
1 parent 140e670 commit a2a865c
Show file tree
Hide file tree
Showing 4 changed files with 94 additions and 1 deletion.
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,8 @@ bin
pkg

# IDK where this comes from
src/uri.txt
uri.txt

# VIM
*~
*.swp
12 changes: 12 additions & 0 deletions src/azq/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ Usage:
azq tp [ -F configFile ] [ -e environment ] <queueName>
azq profile [ -F configFile ] [ -e environment ] <queueName> [<duration>]
azq put [ -F configFile ] [ -e environment ] <queueName> <message>
azq peek [ -F configFile ] [ -e environment ] <queueName>
azq pop [ -F configFile ] [ -e environment ] <queueName>
Arguments:
queueName The name(s) of one or more queues
queuePrefix A prefix for filtering which queues to show
Expand Down Expand Up @@ -87,6 +89,16 @@ func doIt(dict map[string]interface{}) {
message := dict["<message>"].(string)
engineroom.Put(queueName, message)
}

if dict["pop"].(bool) {
queueName := dict["<queueName>"].(string)
engineroom.Pop(queueName)
}

if dict["peek"].(bool) {
queueName := dict["<queueName>"].(string)
engineroom.Peek(queueName)
}
}

//To do: get a better handle on what docopt.Parse arguments do.
Expand Down
35 changes: 35 additions & 0 deletions src/engineroom/peek.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package engineroom

import (
"encoding/base64"
"fmt"
"github.com/nadroz/azure-sdk-for-go/storage"
)

func Peek(queueName string) {
client := getStorageClient()
params := storage.PeekMessagesParameters{
NumOfMessages: 1,
}

messages, err := client.PeekMessages(queueName, params)
if err != nil {
fmt.Printf("Failed to peek messages: %s\n", err)
return
}

if len(messages.QueueMessagesList) != 1 {
return
}

msg := messages.QueueMessagesList[0]

txt, err := base64.StdEncoding.DecodeString(msg.MessageText)

if err != nil {
fmt.Printf("Failed to decode message: %s\n", err)
return
}

fmt.Printf("%s\n", txt)
}
42 changes: 42 additions & 0 deletions src/engineroom/pop.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package engineroom

import (
"encoding/base64"
"fmt"
"github.com/nadroz/azure-sdk-for-go/storage"
)

func Pop(queueName string) {
client := getStorageClient()
params := storage.GetMessagesParameters{
NumOfMessages: 1,
VisibilityTimeout: 30,
}

messages, err := client.GetMessages(queueName, params)
if err != nil {
fmt.Printf("Failed to pop message: %s\n", err)
return
}

if len(messages.QueueMessagesList) != 1 {
return
}

msg := messages.QueueMessagesList[0]

err = client.DeleteMessage(queueName, msg.MessageID, msg.PopReceipt)

if err != nil {
fmt.Printf("Failed to pop message: %s\n", err)
}

txt, err := base64.StdEncoding.DecodeString(msg.MessageText)

if err != nil {
fmt.Printf("Failed to decode message: %s\n", err)
return
}

fmt.Printf("%s\n", txt)
}

0 comments on commit a2a865c

Please sign in to comment.