gpt4 book ai didi

转到缓冲 channel 通过选择

转载 作者:IT王子 更新时间:2023-10-29 02:11:54 26 4
gpt4 key购买 nike

我有 2 个缓冲 channel 为入站请求提供服务:

rabbitQ = make(chan map[string]interface{}, 1000)
sqsQ = make (chan map[string]interface{}, 1000)

我的调度程序函数如下所示:

func dispatchMessage(params map[string]interface{}) {

if !shouldFailoverToSQS {
select {
case rabbitQ <- params:
sentToRabbitMQ++
case sqsQ <- params:
sentToSQS++
default:
log.Error("Failed to dispatch mesaage to either RabbitMQ or SQS")
}
} else {
sqsQ <- params
}

}

我希望消息总是会发送到 rabbitQ,除非缓冲区已满,但我发现调用失败并在大约一半的时间内将消息发送到 sqsQ。这不是我想要的 - 我只想在 rabbitQ 已满时发送到 sqsQ。

我该如何强制执行?

最佳答案

根据 Voker 的评论,这就是我想出的:

func dispatchMessage(params map[string]interface{}) {

//log.Debugf("Failover: %t, Len: %d", shouldFailoverToSQS, len(rabbitQ))

if !shouldFailoverToSQS {
select {
case rabbitQ <- params:
sentToRabbitMQ++
default:
select {
case sqsQ <- params:
sentToSQS++
default:
log.Error("Failed to dispatch mesaage to either RabbitMQ or SQS")
}
}
} else {
select {
case sqsQ <- params:
sentToSQS++
default:
log.Error("Failed to dispatch mesaage to either RabbitMQ or SQS")
}
}

}

关于转到缓冲 channel 通过选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44020814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com