在我的代码中,我有接口
import amqp "github.com/rabbitmq/amqp091-go"
type Consumer interface {
StartConsuming(queueName, key string) (<-chan amqp.Delivery, error)
}
及其impl
package rabbitmq
import amqp "github.com/rabbitmq/amqp091-go"
type Consumer struct {
*Connection
}
func (c Consumer) StartConsuming(queueName, key string) (<-chan amqp.Delivery, error) {
_, err := c.Channel.QueueDeclare(
queueName,
true,
false,
false,
false,
nil,
)
...
return c.Connection.Consume(
queueName,
"",
false,
false,
false,
false,
nil,
)
}
问题是,在我的界面中,我不想指定它是类型的传递
amqp.Delivery
,我希望它是一个通用消息,这样我就可以随时切换到任何其他代理,例如MQTT。但我不知道如何使这个更抽象、更少的实现绑定,从而使它保持“愚蠢”。通常情况下,使用结构变量等会很容易,但在这里,我仍然不知道这个通道。