ΠΡΠ»ΠΈ Ρ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡ ΠΊ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΡΡΠ°Π·Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 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)
}
}
ΠΠ°ΡΠ° Π°Π½ΠΎΠ½ΠΈΠΌΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ d
ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° for. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π½Π°Π·Π²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ
Π²Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π’Π°ΠΊΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
go func() {
log.Fatal(<-channel.NotifyClose(make(chan *amqp.Error)))
}()
@ MattParker89 ΡΠΌ.
ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΏΠΎΠΌΠΎΡΡ. @michaelklishin Π― ΠΎΠ±ΠΌΠ°Π½ΡΠ». Π― Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΠ» Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Go. Π― Π·Π°ΡΡΠ°Π²ΠΈΠ» Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π²ΡΠ΄Π΅Π»ΠΈΠ² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π² Π΅Π΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ go. ΠΠ»Ρ Π²ΡΠ΅Ρ , ΠΊΡΠΎ ΡΠΎΠ²Π΅ΡΡΠ°Π΅Ρ ΡΡ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΡ, Ρ ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΎΡΠΈΠ±ΠΊΡ Exception (406) Reason: Β«PRECONDITION_FAILED - Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΡΠ΅Π³ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ 24782Β».
ΠΠΎΡ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠΎΠ΄
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 Π― ΠΎΠ±ΠΌΠ°Π½ΡΠ». Π― Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΠ» Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Go. Π― Π·Π°ΡΡΠ°Π²ΠΈΠ» Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π²ΡΠ΄Π΅Π»ΠΈΠ² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π² Π΅Π΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ go. ΠΠ»Ρ Π²ΡΠ΅Ρ , ΠΊΡΠΎ ΡΠΎΠ²Π΅ΡΡΠ°Π΅Ρ ΡΡ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΡ, Ρ ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΎΡΠΈΠ±ΠΊΡ Exception (406) Reason: Β«PRECONDITION_FAILED - Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΡΠ΅Π³ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ 24782Β».
ΠΠΎΡ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠΎΠ΄