如何在rabbitmq go lang中发布和消费make(map[string]string)
How to publish and consume make(map[string]string) in rabbitmq go lang
我有多个键值类型的对象,我需要将它们发送到 RabbitMQ,因此转发会消耗它们。所以,在经历了这个 RabbitMQ link 之后。它仅说明发布简单纯文本消息的方式。谁能告诉我如何在 RabbitMQ go lang 中发布和使用地图对象?
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: ????,
})
您需要将您的 Go 对象序列化为例如。发布前的 base64 文本。在您的消费者中,您然后反序列化它以取回您的初始对象。请参阅“”以获取 Go 中的示例。
对于内容类型,我不确定哪种最合适。 application/octet-stream
?
就这么简单。您可以使用 json and bytes 包来序列化和反序列化消息。为您准备了这个例子:
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 库中的主体字段是字节数组,因此您只需要转换 to/from 您的数据结构 to/from 字节数组。
我有多个键值类型的对象,我需要将它们发送到 RabbitMQ,因此转发会消耗它们。所以,在经历了这个 RabbitMQ link 之后。它仅说明发布简单纯文本消息的方式。谁能告诉我如何在 RabbitMQ go lang 中发布和使用地图对象?
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: ????,
})
您需要将您的 Go 对象序列化为例如。发布前的 base64 文本。在您的消费者中,您然后反序列化它以取回您的初始对象。请参阅“
对于内容类型,我不确定哪种最合适。 application/octet-stream
?
就这么简单。您可以使用 json and bytes 包来序列化和反序列化消息。为您准备了这个例子:
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 库中的主体字段是字节数组,因此您只需要转换 to/from 您的数据结构 to/from 字节数组。