github.com/vmware/transport-go@v1.3.4/bridge/example_connector_broker_tcp_test.go (about) 1 // Copyright 2019-2020 VMware, Inc. 2 // SPDX-License-Identifier: BSD-2-Clause 3 4 package bridge_test 5 6 import ( 7 "fmt" 8 "github.com/vmware/transport-go/bridge" 9 "github.com/vmware/transport-go/bus" 10 ) 11 12 func Example_connectUsingBrokerViaTCP() { 13 14 // get a reference to the event bus. 15 b := bus.GetBus() 16 17 // create a broker connector configuration, using WebSockets. 18 // Make sure you have a STOMP TCP server running like RabbitMQ 19 config := &bridge.BrokerConnectorConfig{ 20 Username: "guest", 21 Password: "guest", 22 ServerAddr: ":61613", 23 STOMPHeader: map[string]string{ 24 "access-token": "test", 25 }, 26 } 27 28 // connect to broker. 29 c, err := b.ConnectBroker(config) 30 if err != nil { 31 fmt.Printf("unable to connect, error: %e", err) 32 } 33 defer c.Disconnect() 34 35 // subscribe to our demo simple-stream 36 s, _ := c.Subscribe("/queue/sample") 37 38 // set a counter 39 n := 0 40 41 // create a control chan 42 done := make(chan bool) 43 44 // listen for messages 45 var consumer = func() { 46 for { 47 // listen for incoming messages from subscription. 48 m := <-s.GetMsgChannel() 49 n++ 50 51 // get byte array. 52 d := m.Payload.([]byte) 53 54 fmt.Printf("Message Received: %s\n", string(d)) 55 // listen for 5 messages then stop. 56 if n >= 5 { 57 break 58 } 59 } 60 done <- true 61 } 62 63 // send messages 64 var producer = func() { 65 for i := 0; i < 5; i++ { 66 c.SendMessage("/queue/sample", "text/plain", []byte(fmt.Sprintf("message: %d", i))) 67 } 68 } 69 70 // listen for incoming messages on subscription for destination /queue/sample 71 go consumer() 72 73 // send some messages to the broker on destination /queue/sample 74 go producer() 75 76 // wait for messages to be processed. 77 <-done 78 }