Я полный новичок Go, поэтому извините за вопрос заранее.
Я пытаюсь работать с определенным интерфейсом для подключения к брокеру сообщений:
// Broker is an interface used for asynchronous messaging.
type Broker interface {
Options() Options
Address() string
Connect() error
Disconnect() error
Init(...Option) error
Publish(string, *Message, ...PublishOption) error
Subscribe(string, Handler, ...SubscribeOption) (Subscriber, error)
String() string
}
// Handler is used to process messages via a subscription of a topic.
// The handler is passed a publication interface which contains the
// message and optional Ack method to acknowledge receipt of the message.
type Handler func(Publication) error
// Publication is given to a subscription handler for processing
type Publication interface {
Topic() string
Message() *Message
Ack() error
}
Я пытаюсь использовать функцию Subscribe
, чтобы подписаться на канал, и это тот момент, когда я борюсь прямо сейчас.
Мой текущий подход следующий:
natsBroker.Subscribe(
"QueueName",
func(p broker.Publication) {
fmt.Printf(p.Message)
},
)
Вывод ошибки: cannot use func literal (type func(broker.Publication)) as type broker.Handler in argument to natsBroker.Subscribe
.
Но как мне убедиться, что тип функции на самом деле является broker.Handler
?
Спасибо за ваше время заранее!
Обновление
В случае, если кому-то это интересно, отсутствовал тип возврата ошибки, который вызвал ошибку, поэтому он должен выглядеть примерно так:
natsBroker.Subscribe (
"QueueName",
broker.Handler (func (p broker.Publication) error {
fmt.Printf (p.Topic ())
вернуть ноль
}),
) * * Тысяча двадцать-один