2

I am trying to configure a RabbitMQ broker using the go-micro framework. I have noticed that the broker interface in go-micro has a broker.SubscriberOptions struct which allows configuring the parameters I am looking for (AutoAck, Queue name and so on) however I am unable to figure out how to pass this when starting a broker.

This is how a simple rabbit go-micro setup would look like

package main

import (
    "log"

    "github.com/micro/go-micro/server"
    "github.com/micro/go-plugins/broker/rabbitmq"

    micro "github.com/micro/go-micro"
)


func main() {
    // Create a new service. Optionally include some options here.
    service := micro.NewService(
        micro.Name("go-micro-rabbit"),
        micro.Broker(rabbitmq.NewBroker()),
    )

    // Init will parse the command line flags.
    service.Init()

    // Register handler
    proto.RegisterGreeterHandler(service.Server(), new(Greeter))

    micro.RegisterSubscriber("micro-exchange", service.Server(), myFunc, server.SubscriberQueue("my-queue"))

    // Run the server
    if err := service.Run(); err != nil {
        log.Fatal(err)
    }
}

The micro.RegisterSubscriber method takes in a list of server.SubscriberOption but does not allow me to set the broker.SubscriberOptions and the rabbitmq.NewBroker allows setting broker.Options but once again, not broker.SubscriberOptions

I have dug in the code of go-micro but have been unable to figure out how the broker.Subscribe method (Which exposes the correct struct) is called or by who.

Is this possible at all? Is it maybe something not yet fully fleshed out in the API?

M Reza
  • 18,350
  • 14
  • 66
  • 71
Alexandre Thenorio
  • 2,288
  • 3
  • 31
  • 50

0 Answers0