RabbitMQ 工作模式例項

2021-10-07 17:47:53 字數 2657 閱讀 1086

/*************************rabbitmq初始化start**********************/

// 除了****** 模式外、其他的模式都是由 佇列 交換機 key 不同組合實現的

type rabbitmq struct

// 建立rabbitmq 例項

func newrabbitmq(queuename, exchange, key string) (*rabbitmq, error)

var err error

// dial mq

rabbitmq.conn, err = amqp.dial(rabbitmq.mqurl)

rabbitmq.failonerr(err, "建立連線錯誤")

if err != nil

// get channel

rabbitmq.channel, err = rabbitmq.conn.channel()

if err != nil

return rabbitmq, nil}

// 錯誤處理

func (r *rabbitmq) failonerr(err error, message string) }

/****************rabbitmq初始化end**********************************/

/******************和work 模式 start******************/

// step 1. ****** 建立例項

func newrabbitmq******(queuename string) (*rabbitmq, error)

return rabbitmq, nil}

// step 2. ****** producer code

func (r *rabbitmq) publish******(message string) error

// 2.2 傳送訊息到佇列中

err = r.channel.publish(

r.exchange,

r.queuename,

// 如果為true 根據exchange 型別 和 routkey規則、 如果無法找到符合條件的佇列、那麼會把傳送完的訊息返回給傳送者

false,

// 如果為true 當exchange傳送訊息 到佇列後發現佇列上沒有繫結消費者, 則會把訊息還給 傳送者

false,

amqp.publishing,

) if err != nil

return nil}

// step 3. ****** consumer code

func (r *rabbitmq) consume******()

message, err := r.channel.consume(

r.queuename,

// 用來區分多個消費者

"",// 是否自動應答 (消費完了後 是否自動告訴rabbitmq服務 消費完了 預設為true)

true,

// 是否具有排他性 (true 就是 建立了自己可見的佇列)

false,

// 如果為true 表示 不能將同乙個 connection 中傳送的訊息傳遞給這個connection中的消費者 (預設為false)

false,

// 是否阻塞 false為不阻塞 (阻塞就是 這個消費完 下個再進來、我們系統中是需要的)

true,

// 其他引數

nil,

) if err != nil

//不讓協程終止

forever := make(chan bool)

// 啟用 goroutine 處理訊息

go func()

}()// 在沒有訊息處理後 進行阻塞

}

package main

import (

"mqtest/rabbitmq"

"fmt"

)func main()

rabbitmq.consume******()

}

package main

import (

"mqtest/rabbitmq"

"fmt"

)func main()

rabbitmq.consume******()

}

package main

import (

"mqtest/rabbitmq"

"fmt"

"strconv"

)func main()

for i:=0; i<10;i++

fmt.println("傳送成功")

}

RabbitMQ工作模式

rabbitmq工作模式有六種 工作佇列模式,發布訂閱模式,路由模式,萬用字元模式,header模式和rpc模式。1.工作佇列模式 2.發布訂閱模式 交換機型別為funout。3.路由模式 交換機型別為direct。路由模式和發布訂閱模式區別 1 發布訂閱模式不需要繫結routingkey,訊息傳送...

rabbitmq 工作模式

c1 c2輪流接收訊息 啟動兩個接受者 channel.queuedeclare queue que durable false,exclusive false,autodelete false,arguments null 交換機設定為空字串 p發給乙個交換機,這個交換機繫結兩個佇列,c1 c2各...

RabbitMQ 工作模式

第一種 簡單模式 一 生產者 public static void main string args throws ioexception,timeoutexception二 消費者 public static void main string args throws ioexception,tim...