A
conn, err := amqp.Dial("amqp://admin:admin@localhost:5672/")
fmt.Println("Connected to RabbitMq")
HandleError(err, "Failed to connect to RabbitMQ")
defer conn.Close()
ch, err := conn.Channel()
HandleError(err, "Failed to open a channel")
defer ch.Close()
q, err := ch.QueueDeclare(
"", // name
false, // durable
false, // delete when unused
true, // exclusive
false, // noWait
nil, // arguments
)
HandleError(err, "Failed to declare a queue")
msgs, err := ch.Consume(
q.Name, // queue
"", // consumer
true, // auto-ack
false, // exclusive
false, // no-local
false, // no-wait
nil, // args
)
HandleError(err, "Failed to register a consumer")
corrID := string(14)
var user Users
e, err := json.Marshal(user)
if err != nil {
fmt.Println(err)
return
}
err = ch.Publish(
"", // exchange
"rpc_queue", // routing key
false, // mandatory
false, // immediate
amqp.Publishing{
ContentType: "application/json",
CorrelationId: corrID,
ReplyTo: q.Name,
Body: []byte(e),
})
HandleError(err, "Failed to publish a message")
for d := range msgs {
if corrID == d.CorrelationId {
fmt.Println("Success")
HandleError(err, "Failed to send message")
break
}
}
return
forever := make(chan bool)
// Initializing mux
r := mux.NewRouter()
// Creating endpoints for handlers
r.HandleFunc("/api", FormHandler).Methods("OPTIONS", "POST")
http.ListenAndServe(":8889", r)
HandleError(http.ErrServerClosed, "Server didnt start")
<-forever