Amqp: d.Ack๋Š” ์ฑ„๋„์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2013๋…„ 10์›” 22์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: streadway/amqp

ํ•œ ๋ฒˆ์— ์ถฉ๋ถ„ํ•œ ๋ฉ”์‹œ์ง€(์˜ˆ: 10,000)๋กœ ์†Œ๋น„์ž๋ฅผ ๊ณต๊ฒฉํ•˜๋ฉด ์ฑ„๋„ ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ซํžˆ๊ณ  ๋” ์ด์ƒ ์ƒˆ๋กœ์šด ๋ฐฐ๋‹ฌ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ d.Ack๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋‚ฉํ’ˆ๋ณธ์ฒด๋งŒ ์ถœ๋ ฅํ•˜๋ฉด ๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค.

func main() {
    conn, _ := amqp.Dial(*uri)

    channel, _ := conn.Channel()

    deliveries, _ := channel.Consume(
        *queue, //queue
        "",
        false,
        false,
        false,
        false,
        nil)

    for d := range deliveries {
        go func(amqp.Delivery) {
            log.Printf("got %s", d.Body)
            d.Ack(false)
        }(d)
    }
}

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. @michaelklishin ์ €๋Š” ์ด์ค‘

์ž‘์—… ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

func main() {
    conn, _ := amqp.Dial(*uri)

    channel, _ := conn.Channel()

    deliveries, _ := channel.Consume(
        *queue, //queue
        "",
        false,
        false,
        false,
        false,
        nil)

    for d := range deliveries {
        go doSomeWork(d)
    }
}
func doSomeWork(d amqp.Delivery){
     log.Printf("got %s", d.Body)
     d.Ack(false)
}

๋ชจ๋“  3 ๋Œ“๊ธ€

์ต๋ช… ํ•จ์ˆ˜๊ฐ€ for ๋ฌธ์—์„œ d ์ด์ƒ์œผ๋กœ ๋‹ซํž™๋‹ˆ๋‹ค. func์˜ ๋ฒ”์œ„์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•˜์‹ญ์‹œ์˜ค.

๋˜ํ•œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋น„๋™๊ธฐ ์ฑ„๋„ ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

go func() {
  log.Fatal(<-channel.NotifyClose(make(chan *amqp.Error)))
}()

@MattParker89 ๋Š” RabbitMQ ๋กœ๊ทธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์ฑ„๋„ ์˜ˆ์™ธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ฑฐ์˜ ํ™•์‹คํ•˜๊ฒŒ ์ด์ค‘์œผ๋กœ ๋ฐฐ๋‹ฌ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. @michaelklishin ์ €๋Š” ์ด์ค‘

์ž‘์—… ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

func main() {
    conn, _ := amqp.Dial(*uri)

    channel, _ := conn.Channel()

    deliveries, _ := channel.Consume(
        *queue, //queue
        "",
        false,
        false,
        false,
        false,
        nil)

    for d := range deliveries {
        go doSomeWork(d)
    }
}
func doSomeWork(d amqp.Delivery){
     log.Printf("got %s", d.Body)
     d.Ack(false)
}
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰