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

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

// Step 1. Simple 创建实例
haoyanbin's avatar
1  
haoyanbin committed
9
func NewRabbitMQSimple(queueName string) *RabbitMQ {
haoyanbin's avatar
haoyanbin committed
10 11 12
	//在simple模式下 exchange and key 都为空
	rabbitMQ, err := newRabbitMQ(queueName, "", "")
	if err != nil {
haoyanbin's avatar
1  
haoyanbin committed
13
		fmt.Println("NewRabbitMQSimple err:", err)
haoyanbin's avatar
haoyanbin committed
14 15 16 17 18 19
		return nil
	}
	return rabbitMQ
}

// Step 2. Simple producer code
haoyanbin's avatar
1  
haoyanbin committed
20
func (r *RabbitMQ) PublishSimple(message []byte) error {
haoyanbin's avatar
haoyanbin committed
21 22
	//fmt.Println("push:", string(message))
	//fmt.Println(2)
haoyanbin's avatar
haoyanbin committed
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
	// 2.1 申请队列、 如果队列不存在则会自动创建、 如果存在则跳过创建
	// 保证队列存在、 消息能发送到队列中
	_, err := r.channel.QueueDeclare(
		r.QueueName,
		//是否持久化
		true,
		// 是否自动删除
		false,
		// 是否具有排他性
		false,
		//是否阻塞
		false,
		// 额外属性
		nil,
	)
	if err != nil {
		return err
	}

	// 2.2 发送消息到队列中
	err = r.channel.Publish(
		r.Exchange,
		r.QueueName,
		// 如果为true  根据exchange 类型 和 routkey规则、 如果无法找到符合条件的队列、那么会把发送完的消息返回给发送者
		false,
		// 如果为true  当exchange发送消息 到队列后发现队列上没有绑定消费者, 则会把消息还给 发送者
		false,
		amqp.Publishing{
			// 消息持久化
			DeliveryMode: amqp.Persistent,
			ContentType:  "text/plain",
haoyanbin's avatar
1  
haoyanbin committed
54
			Body:         message,
haoyanbin's avatar
haoyanbin committed
55 56 57 58 59 60 61 62
		},
	)
	if err != nil {
		return err
	}

	return nil
}
haoyanbin's avatar
1  
haoyanbin committed
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 90 91 92 93 94 95

type SetMsgReq struct {
	ProcedureType           int    `json:"procedureType"`
	GroupId                 string `json:"groupId" db:"group_id"`
	UserId                  string `json:"userId" db:"user_id"`
	BusinessId              string `json:"businessId" db:"business_id"`
	CustomerId              string `json:"customerId" db:"customer_id"`
	Status                  string `json:"status" db:"status"`
	StartTime               string `json:"startTime" db:"start_time"`
	EndTime                 string `json:"endTime" db:"end_time"`
	Remark                  string `json:"remark" db:"remark"`
	Promoter                string `json:"promoter" db:"promoter"`
	Finish                  string `json:"finish" db:"finish"`
	ExpertUnread            string `json:"expertUnread" db:"expert_unread"`
	UserUnread              string `json:"userUnread" db:"user_unread"`
	ExpertUnreadMessage     string `json:"expertUnreadMessage" db:"expert_unread_message"`
	ExpertUnreadMessageTime string `json:"expertUnreadMessageTime" db:"expert_unread_message_time"`
	GuideMsg                string `json:"guideMsg" db:"guide_msg"`
	GuideDate               string `json:"guideDate" db:"guide_date"`
	ReceiveDate             string `json:"receiveDate" db:"receive_date"`
	ConversationDate        string `json:"conversationDate" db:"conversation_date"`
	StartReceiveDate        string `json:"startReceiveDate" db:"start_receive_date"`
	ConversationId          string `json:"conversationId" db:"conversation_id"`
	PromoterType            string `json:"promoterType" db:"promoter_type"`
	SendTime                string `json:"sendTime" db:"send_time"`
	MsgType                 int    `json:"msgType" db:"msg_type"`
	Content                 string `json:"content" db:"content"`
	Sender                  string `json:"sender" db:"sender"`
	Receiver                string `json:"receiver" db:"receiver"`
	HandleTime              string `json:"handleTime" db:"handle_time"`
	HandlePersonId          string `json:"handlePersonId" db:"handle_person_id"`
	HandlePerson            string `json:"handlePerson" db:"handle_person"`
}