go包amqp

package main

import (
	"fmt"
	"github.com/streadway/amqp"
)

// amqp/client/main.go

func main(){
	co()
}

func co(){
	conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/test")
	if err != nil {
		fmt.Println("InitRabbitMq Dial", err)
		return
	}
	ch, err := conn.Channel()
	if err != nil {
		fmt.Println("InitRabbitMq Channel", err)
		return
	}
	ch.Qos(1,0,false)
	err = ch.ExchangeDeclare(
		"logs_topic", // name
		"topic",      // type
		true,         // durable
		false,        // auto-deleted
		false,        // internal
		false,        // no-wait
		nil,          // arguments
	)
	q, err := ch.QueueDeclare(
		"q_order_msg22",  // name
		true,  // durable
		false, // delete when unused
		false, // exclusive
		false, // no-wait
		nil,   // arguments
	)
	if err != nil{
		fmt.Println("QueueDeclare",err)
		return
	}
	err = ch.QueueBind(
		q.Name,       // queue name
		"hh",            // routing key
		"logs_topic", // exchange
		false,
		nil)
	msgs, err := ch.Consume(
		q.Name, // queue
		"c_order_msg30",     // consumer
		false,   // auto-ack
		false,  // exclusive
		false,  // no-local
		false,  // no-wait
		nil,    // args
	)
	if err != nil{
		fmt.Println("Consume",err)
		return
	}
	forever := make(chan bool)

	go func() {
		for d := range msgs {
			fmt.Printf("\n11 a message: %s  ", d.Body)
			//time.Sleep(10*time.Second)
			//fmt.Println("11end ",string(d.Body))
			ch.Ack(d.DeliveryTag,false)
		}
	}()

	fmt.Printf(" [*] Waiting for messages. To exit press CTRL+C\n")
	<-forever
}
package main

import (
	"fmt"
	"github.com/streadway/amqp"
)


// amqp/client2/main.go

func main(){
	co()
}

func co(){
	conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/test")
	if err != nil {
		fmt.Println("InitRabbitMq Dial", err)
		return
	}
	ch, err := conn.Channel()
	if err != nil {
		fmt.Println("InitRabbitMq Channel", err)
		return
	}
	ch.Qos(1,0,false)
	err = ch.ExchangeDeclare(
		"logs_topic", // name
		"topic",      // type
		true,         // durable
		false,        // auto-deleted
		false,        // internal
		false,        // no-wait
		nil,          // arguments
	)
	q, err := ch.QueueDeclare(
		"q_order_msg",  // name
		true,  // durable
		false, // delete when unused
		false, // exclusive
		false, // no-wait
		nil,   // arguments
	)
	if err != nil{
		fmt.Println("QueueDeclare",err)
		return
	}
	err = ch.QueueBind(
		q.Name,       // queue name
		"hh",            // routing key
		"logs_topic", // exchange
		false,
		nil)
	msgs, err := ch.Consume(
		q.Name, // queue
		"c_order_msg3",     // consumer
		false,   // auto-ack
		false,  // exclusive
		false,  // no-local
		false,  // no-wait
		nil,    // args
	)
	if err != nil{
		fmt.Println("Consume",err)
		return
	}
	forever := make(chan bool)

	go func() {
		for d := range msgs {
			fmt.Printf("\n11 a message: %s  ", d.Body)
			//time.Sleep(10*time.Second)
			//fmt.Println("11end ",string(d.Body))
			ch.Ack(d.DeliveryTag,false)
		}
	}()

	fmt.Printf(" [*] Waiting for messages. To exit press CTRL+C\n")
	<-forever
}
package main

import (
	"fmt"
	"github.com/streadway/amqp"
	"strconv"
)

// amqp/pro/main.go

func main(){
	InitRabbitMq()
}

func InitRabbitMq() {
	conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/test")
	if err != nil {
		fmt.Println("InitRabbitMq Dial", err)
		return
	}
	ch, err := conn.Channel()
	if err != nil {
		fmt.Println("InitRabbitMq Channel", err)
		return
	}
	err = ch.ExchangeDeclare(
		"logs_topic", // name
		"topic",      // type
		true,         // durable
		false,        // auto-deleted
		false,        // internal
		false,        // no-wait
		nil,          // arguments
	)

	body := "Hello !"
	for i:=0;i<20;i++{
		if err = ch.Publish(
			"logs_topic",     // exchange
			"hh", // routing key
			false,  // mandatory
			false,  // immediate
			amqp.Publishing {
				ContentType: "text/plain",
				Body:        []byte(body+strconv.Itoa(i)),
			});err != nil{
			fmt.Println("Publish",err)
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值