simple.go 2.05 KB
Newer Older
haoyanbin's avatar
haoyanbin committed
1 2 3 4 5 6 7
package mq

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

haoyanbin's avatar
haoyanbin committed
8
func (r *RabbitMQ) PublishSimple(message []byte) {
haoyanbin's avatar
haoyanbin committed
9

haoyanbin's avatar
haoyanbin committed
10 11
	err := r.channel.Publish(
		"",
haoyanbin's avatar
haoyanbin committed
12 13 14 15 16 17 18 19 20
		r.QueueName,
		// 如果为true  根据exchange 类型 和 routkey规则、 如果无法找到符合条件的队列、那么会把发送完的消息返回给发送者
		false,
		// 如果为true  当exchange发送消息 到队列后发现队列上没有绑定消费者, 则会把消息还给 发送者
		false,
		amqp.Publishing{
			// 消息持久化
			DeliveryMode: amqp.Persistent,
			ContentType:  "text/plain",
haoyanbin's avatar
1  
haoyanbin committed
21
			Body:         message,
haoyanbin's avatar
haoyanbin committed
22 23 24
		},
	)
	if err != nil {
haoyanbin's avatar
haoyanbin committed
25 26
		fmt.Println("err publish:", err)
		return
haoyanbin's avatar
haoyanbin committed
27 28 29
	}

}
haoyanbin's avatar
1  
haoyanbin committed
30

haoyanbin's avatar
haoyanbin committed
31
// Step 1. Simple 创建实例
haoyanbin's avatar
haoyanbin committed
32
func NewRabbitMQSimple() *RabbitMQ {
haoyanbin's avatar
haoyanbin committed
33
	//在simple模式下 exchange and key 都为空
haoyanbin's avatar
haoyanbin committed
34
	rabbitMQ, err := newRabbitMQ( "", "")
haoyanbin's avatar
haoyanbin committed
35 36 37 38 39
	if err != nil {
		fmt.Println("NewRabbitMQSimple err:", err)
		return nil
	}
	return rabbitMQ
haoyanbin's avatar
1  
haoyanbin committed
40
}
haoyanbin's avatar
haoyanbin committed
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89

//
//// Step 2. Simple producer code
//// 2.1 申请队列、 如果队列不存在则会自动创建、 如果存在则跳过创建
//// 保证队列存在、 消息能发送到队列中
//func (r *RabbitMQ) IsQueue() error {
//	_, err := r.channel.QueueDeclare(
//		r.QueueName,
//		//是否持久化
//		true,
//		// 是否自动删除
//		false,
//		// 是否具有排他性
//		false,
//		//是否阻塞
//		false,
//		// 额外属性
//		nil,
//	)
//
//	if err != nil {
//		return err
//	}
//	return nil
//}

// 2.2 发送消息到队列中
//func (r *RabbitMQ) PublishSimple(message []byte) {
//
//	err := r.channel.Publish(
//		r.Exchange,
//		r.QueueName,
//		// 如果为true  根据exchange 类型 和 routkey规则、 如果无法找到符合条件的队列、那么会把发送完的消息返回给发送者
//		false,
//		// 如果为true  当exchange发送消息 到队列后发现队列上没有绑定消费者, 则会把消息还给 发送者
//		false,
//		amqp.Publishing{
//			// 消息持久化
//			DeliveryMode: amqp.Persistent,
//			ContentType:  "text/plain",
//			Body:         message,
//		},
//	)
//	if err != nil {
//		return
//	}
//
//	return
//}