go - 如何在rabbitmq go lang中发布和消费make(map[string]string)

标签 go rabbitmq rabbitmqctl

我有多个键值类型的对象,我需要将它们发送到 RabbitMQ,因此转发会消耗它们。所以,在经历了这个RabbitMQ之后关联。它仅说明发布简单纯文本消息的方式。谁能告诉我如何在 RabbitMQ go lang 中发布和使用 map 对象?

     m := make(map[string]string)
     m["col1"] = "004999010640000"
     m["col2"] = "awadwaw"
     m["col3"] = "13"  

     err = ch.Publish(
        "EventCaptureData-Exchange", // exchange
        q.Name + "Key",          // routing key
        true,           // mandatory                            
        false,           // immediate
        amqp.Publishing{
            ContentType: "?????",
            Body:        ????,
        })

最佳答案

就这么简单。您可以使用 jsonbytes序列化和反序列化消息的包。为您准备了这个示例:

type Message map[string]interface{}

func serialize(msg Message) ([]byte, error) {
    var b bytes.Buffer
    encoder := json.NewEncoder(&b)
    err := encoder.Encode(msg)
    return b.Bytes(), err
}

func deserialize(b []byte) (Message, error) {
    var msg Message
    buf := bytes.NewBuffer(b)
    decoder := json.NewDecoder(buf)
    err := decoder.Decode(&msg)
    return msg, err
}

是的,基本上就是这样。 RabbitMQ 中的正文字段库是字节数组,因此您只需将数据结构与字节数组相互转换即可。

关于go - 如何在rabbitmq go lang中发布和消费make(map[string]string),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36175661/

相关文章:

google-chrome-extension - 全局键盘输入去

java - 保证消息异步传送

连接时 Rabbitmq channel 错误

rabbitmq 列出所有虚拟主机上的队列

java - 如何在Java上正确编写RabbitMQ Publisher?

windows - rabbitmqctl 错误 : unable to connect to node rabbit@myserver nodedown

不能用宏包装 cgo 标志

go - 从 golang 使用 AMQP 1.0 连接到 IBM MQ 时出现 EOF

go - 为什么Go编程中没有while循环?试图让用户输入数字1到12?

rabbitmq - 无法在 Flink 1.3.2 中启动 RabbitMQ 源