Sample-Code-Snippets/Go/azure-service-bus-emulator-console-sample/main.go (50 lines of code) (raw):
package main
import (
"context"
"fmt"
"log"
"time"
"github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus"
)
func main() {
connectionString := "Endpoint=sb://127.0.0.1;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
queueName := "queue.1"
// Create a Service Bus client
client, err := azservicebus.NewClientFromConnectionString(connectionString, nil)
if err != nil {
log.Fatalf("failed to create client: %s", err)
}
// Send a message
sendMessage(client, queueName, "Hello, Azure Service Bus!")
// Receive messages
receiveMessages(client, queueName)
}
func sendMessage(client *azservicebus.Client, queueName, message string) {
sender, err := client.NewSender(queueName, nil)
if err != nil {
log.Fatalf("failed to create sender: %s", err)
}
defer sender.Close(context.Background())
msg := &azservicebus.Message{
Body: []byte(message),
}
err = sender.SendMessage(context.Background(), msg, nil)
if err != nil {
log.Fatalf("failed to send message: %s", err)
}
fmt.Println("Message sent:", message)
}
func receiveMessages(client *azservicebus.Client, queueName string) {
receiver, err := client.NewReceiverForQueue(queueName, nil)
if err != nil {
log.Fatalf("failed to create receiver: %s", err)
}
defer receiver.Close(context.Background())
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
messages, err := receiver.ReceiveMessages(ctx, 1, nil)
if err != nil {
log.Fatalf("failed to receive messages: %s", err)
}
for _, msg := range messages {
fmt.Println("Received message:", string(msg.Body))
receiver.CompleteMessage(ctx, msg, nil)
}
}