如何在Go中按名称将任务发布到RabbitMQ队列?

I need to publish a task by name (creating a message on a queue with task name passed in headers, passing some args).

I've done this in Celery (Python) like this:

celery_app.send_task("task_name", args=("arg1", "arg2",))

Here's my code in Go to do the same thing:

headers := make(amqp.Table)
headers["argsrepr"] = []string{"arg1", "arg2"}
headers["task"] = "task_name"

body := ""
jsonBody, _ := json.Marshal(body)

err = ch.Publish(
  "",     // exchange
  "queue_name", // routing key
  false,  // mandatory
  false,  // immediate
  amqp.Publishing {
    DeliveryMode: amqp.Persistent,
    ContentType:  "application/json",
    Body:         jsonBody,
    Headers:      headers,
  })

But I get this error:

Failed to publish a message: table field "argsrepr" value [%!t(string=arg1) %!t(string=arg2)] not supported

I'm using "github.com/streadway/amqp" library to talk with my rabbitmq node. It seems that "send task by name" is not implemented in this library.

Here is an illustration of the symptoms. The fmt format string is apparently expecting boolean values.

package main

import "fmt"

func main() {
    s := fmt.Sprintf("%t %t", "arg1", "arg2")
    fmt.Println(s)
    t := fmt.Sprintf("%t %t", true, false)
    fmt.Println(t)
}

Output:

%!t(string=arg1) %!t(string=arg2)
true false