GoでRabbitMQを使用する時、信頼性の高いメッセージングを実現するベストプラクティス

高信頼性メッセージングを Go の RabbitMQ で実現するベストプラクティスは次のとおりです。

  1. 丈夫な
  2. ネイティブにしか通じない日本語で言い換えてください。選択肢は1つだけでお願いします:本当
ch, err := conn.Channel()
if err != nil {
// 处理错误
}
queue, err := ch.QueueDeclare(
"myQueue",
true,
false,
false,
false,
nil,
)
if err != nil {
// 处理错误
}
err = ch.Publish(
"",
"myQueue",
true,
false,
amqp.Publishing{
ContentType: "text/plain",
Body:        []byte("Hello World!"),
},
)
if err != nil {
// 处理错误
}
  1. 確認する
  2. 確認する
  3. 確認
ch, err := conn.Channel()
if err != nil {
// 处理错误
}
err = ch.Confirm(false)
if err != nil {
// 处理错误
}
confirms := ch.NotifyPublish(make(chan amqp.Confirmation, 1))
go func() {
for confirm := range confirms {
if !confirm.Ack {
// 处理未确认的消息
}
}
}()
  1. 配信が遅延されている
args := make(amqp.Table)
args["x-delayed-type"] = "direct"
err = ch.ExchangeDeclare(
"myExchange",
"x-delayed-message",
true,
false,
false,
false,
args,
)
if err != nil {
// 处理错误
}
err = ch.QueueBind(
"myQueue",
"myRoutingKey",
"myExchange",
false,
nil,
)
if err != nil {
// 处理错误
}
err = ch.Publish(
"myExchange",
"myRoutingKey",
false,
false,
amqp.Publishing{
ContentType: "text/plain",
Body:        []byte("Hello World!"),
Expiration:  "3000", // 设置消息的过期时间为 3 秒
},
)
if err != nil {
// 处理错误
}

以上の内容は、Golang RabbitMQ で高信頼性メッセージングを実現するためのベストプラクティスについて説明しています。特定のビジネスニーズと利用シナリオに応じて、追加の設定とカスタマイズを実行することもできます。

bannerAds