ν λ²μ μΆ©λΆν λ©μμ§(μ: 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)
}
}
μ΅λͺ
ν¨μκ° 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)
}
κ°μ₯ μ μ©ν λκΈ
λμμ μ£Όμ μ κ°μ¬ν©λλ€. @michaelklishin μ λ μ΄μ€
μμ μ½λλ λ€μκ³Ό κ°μ΅λλ€.