Skip to content

Commit

Permalink
Adds examples to README.
Browse files Browse the repository at this point in the history
  • Loading branch information
ackleymi committed Nov 13, 2019
1 parent 278dd6c commit 2c97db4
Show file tree
Hide file tree
Showing 5 changed files with 111 additions and 66 deletions.
12 changes: 8 additions & 4 deletions .travis.yml
@@ -1,5 +1,10 @@
language: go

sudo: required
dist: xenial
addons:
apt:
packages:
- rabbitmq-server
services:
- rabbitmq

Expand All @@ -26,6 +31,7 @@ before_install:
- travis_retry go get -u github.com/modocache/gover
- travis_retry go get -u github.com/mattn/goveralls
- travis_retry go get -u golang.org/x/lint/golint
# - docker run -p 127.0.0.1:5672:5672 -p 127.0.0.1:15671:15671 -p 127.0.0.1:15672:15672 -d rabbitmq:3.7-management-alpine

script:
- make
Expand All @@ -35,6 +41,4 @@ after_script:
# Merge all coverage reports located in subdirectories and put them under: gover.coverprofile
- gover
# Send code coverage report to coveralls.io
- goveralls -service=travis-ci -coverprofile=gover.coverprofile

sudo: false
- goveralls -service=travis-ci -coverprofile=gover.coverprofile
5 changes: 1 addition & 4 deletions Makefile
@@ -1,7 +1,4 @@
all: test bench vet lint check-gofmt

bench:
go test -race -bench . -run "Benchmark" ./form
all: test vet lint check-gofmt

build:
go build ./...
Expand Down
49 changes: 49 additions & 0 deletions README.md
Expand Up @@ -22,6 +22,55 @@ go get github.com/piquette/msgr

## Usage example

### Producer

```go
// Instantiate and connect to the server.
conf := &msgr.Config{
URI: "amqp://localhost:5672",
Channel: "queue_name",
}
producer = msgr.ConnectP(conf)
defer producer.Close()

// Send a message.
Enqueue:
{
success := producer.Post([]byte("hi")])
if !success {
// Retry for all eternity.
log.Println("could not enqueue msg")
time.Sleep(time.Second * 3)
goto Enqueue
}
}
```

### Consumer

```go
// Instantiate and connect to the server.
conf := &msgr.Config{
URI: "amqp://localhost:5672",
Channel: "queue_name",
}
consumer = msgr.ConnectC(conf)
defer consumer.Close()

// Receive messages.
open, messages := s.Consumer.Accept()
if !open {
return
}
// Range over the messages chan.
for recv := range messages {
// Got one.
fmt.Println(string(recv.Body)) // prints 'hi'.

// Don't forget to acknowledge.
recv.Ack(false)
}
```


## Contributing
Expand Down
2 changes: 1 addition & 1 deletion client_test.go
Expand Up @@ -50,5 +50,5 @@ func TestQueueSuccess(t *testing.T) {
producer.Close()

<-done
tests.Delete(tests.AMQPIntegrationQueue)
// tests.Delete(tests.AMQPIntegrationQueue)
}
109 changes: 52 additions & 57 deletions testing/testing.go
@@ -1,15 +1,9 @@
package testing

import (
"fmt"
"net/http"
"os"
)

// Testing helpers
const (
// AMQPServiceURL
AMQPServiceURL = "amqp://localhost:5672"
AMQPServiceURL = "amqp://guest:guest@127.0.0.1:5672/"
// AMQPManagementAddr
AMQPManagementAddr = "localhost"
// AMQPIntegrationQueue
Expand All @@ -18,56 +12,57 @@ const (
AMQPErrorQueue = "error_test"
)

var (
// AMQPPortName is the name of the port.
AMQPPortName = "AMQP_MOCK_PORT"
// AMQPPort is the test mocks port.
AMQPPort = "15672"
)
// var (
// // AMQPPortName is the name of the port.
// AMQPPortName = "AMQP_MOCK_PORT"
// // AMQPPort is the test mocks port.
// AMQPPort = "15672"
// )

func init() {
// Check port.
// port := os.Getenv(AMQPPortName)
// if port != "" {
// AMQPPort = port
// }
// // Check is AMQP is running.
// resp, err := http.Get("http://" + AMQPManagementAddr + ":" + AMQPPort)
// if err != nil || resp.StatusCode != http.StatusOK {
// fmt.Fprintf(os.Stderr, "Couldn't reach amqp management at `http://%s:%s`. Is "+
// "it running? Please see README for setup instructions.\n", AMQPManagementAddr, AMQPPort)
// os.Exit(1)
// }
}
// func init() {
// // Check port.
// port := os.Getenv(AMQPPortName)
// if port != "" {
// AMQPPort = port
// }
// // Check is AMQP is running.
// resp, err := http.Get("http://" + AMQPManagementAddr + ":" + AMQPPort)
// if err != nil || resp.StatusCode != http.StatusOK {
// fmt.Fprintf(os.Stderr, "Couldn't reach amqp management at `http://%s:%s`. Is "+
// "it running? Please see README for setup instructions.\n", AMQPManagementAddr, AMQPPort)
// fmt.Fprintf(os.Stderr, "error was: %v\n", err)
// os.Exit(1)
// }
// }

// Delete terminates the named queue.
func Delete(queue string) {
// Check port.
port := os.Getenv(AMQPPortName)
if port != "" {
AMQPPort = port
}
// Build request.
fmt.Fprintf(os.Stderr, "deleting %s queue\n", queue)
url := "http://" + AMQPManagementAddr + ":" + AMQPPort + "/api/queues/" + "%2F" + "/" + queue
req, err := http.NewRequest(http.MethodDelete, url, nil)
if err != nil {
fmt.Fprintf(os.Stderr, "delete queue failed: %s\n", err.Error())
os.Exit(1)
}
req.SetBasicAuth("guest", "guest")
// // Delete terminates the named queue.
// func Delete(queue string) {
// // Check port.
// port := os.Getenv(AMQPPortName)
// if port != "" {
// AMQPPort = port
// }
// // Build request.
// fmt.Fprintf(os.Stderr, "deleting %s queue\n", queue)
// url := "http://" + AMQPManagementAddr + ":" + AMQPPort + "/api/queues/" + "%2F" + "/" + queue
// req, err := http.NewRequest(http.MethodDelete, url, nil)
// if err != nil {
// fmt.Fprintf(os.Stderr, "delete queue failed: %s\n", err.Error())
// os.Exit(1)
// }
// req.SetBasicAuth("guest", "guest")

// Execute request.
resp, err := http.DefaultClient.Do(req)
if err != nil {
fmt.Fprintf(os.Stderr, "delete queue failed: %s\n", err.Error())
os.Exit(1)
}
if resp.StatusCode != http.StatusNoContent {
fmt.Fprintf(os.Stderr, "delete queue response status was %d, not 204\n", resp.StatusCode)
os.Exit(1)
}
// Close.
resp.Body.Close()
fmt.Fprintf(os.Stderr, "deleted %s queue\n", queue)
}
// // Execute request.
// resp, err := http.DefaultClient.Do(req)
// if err != nil {
// fmt.Fprintf(os.Stderr, "delete queue failed: %s\n", err.Error())
// os.Exit(1)
// }
// if resp.StatusCode != http.StatusNoContent {
// fmt.Fprintf(os.Stderr, "delete queue response status was %d, not 204\n", resp.StatusCode)
// os.Exit(1)
// }
// // Close.
// resp.Body.Close()
// fmt.Fprintf(os.Stderr, "deleted %s queue\n", queue)
// }

0 comments on commit 2c97db4

Please sign in to comment.