package mq

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

func (r *RabbitMQ) PublishSimple(message []byte) {

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

}

// Step 1. Simple 创建实例
func NewRabbitMQSimple(queueName string) *RabbitMQ {
	//在simple模式下 exchange and key 都为空
	rabbitMQ, err := newRabbitMQ(queueName, "", "")
	if err != nil {
		fmt.Println("NewRabbitMQSimple err:", err)
		return nil
	}
	return rabbitMQ
}

//
//// 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 {
//		fmt.Println(5)
//		fmt.Println(err)
//		return err
//	}
//	return nil
//}

// 2.2 发送消息到队列中
//func (r *RabbitMQ) PublishSimple(message []byte) {
//	//fmt.Println("push:", string(message))
//
//	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 {
//		fmt.Println(6)
//		fmt.Println(err)
//		return
//	}
//
//	return
//}