Set up a topic and subscription.
()
| 54 | |
| 55 | // Set up a topic and subscription. |
| 56 | func initRabbit() error { |
| 57 | conn, err := amqp.Dial(rabbitURL) |
| 58 | if err != nil { |
| 59 | return err |
| 60 | } |
| 61 | defer conn.Close() |
| 62 | ch, err := conn.Channel() |
| 63 | if err != nil { |
| 64 | return err |
| 65 | } |
| 66 | defer ch.Close() |
| 67 | if err := ch.Confirm(false); err != nil { |
| 68 | return err |
| 69 | } |
| 70 | err = ch.ExchangeDeclare(topicName, |
| 71 | "fanout", // kind |
| 72 | false, // durable |
| 73 | false, // delete when unused |
| 74 | false, // internal |
| 75 | false, // wait for server response |
| 76 | nil) // args |
| 77 | if err != nil { |
| 78 | return err |
| 79 | } |
| 80 | q, err := ch.QueueDeclare(subscriptionName, |
| 81 | false, // durable |
| 82 | false, // delete when unused |
| 83 | false, // exclusive |
| 84 | false, // wait for server response |
| 85 | nil) // args |
| 86 | if err != nil { |
| 87 | return err |
| 88 | } |
| 89 | return ch.QueueBind(q.Name, q.Name, topicName, false, nil) |
| 90 | } |