首页 > 解决方案 > RabbitMQ - SimpleAmqpClient - 我正在尝试将标头与我的消息一起发送,但标头没有被发送;我究竟做错了什么?

问题描述

我正在使用以下内容:https ://github.com/alanxz/SimpleAmqpClient

我正在尝试将标头与我的消息一起发送,但标头没有被发送;我究竟做错了什么?

这是我的代码的样子。我有一个带有一些基本配置值的配置对象。

auto channel = AmqpClient::Channel::Create("localhost", 5672, configuration.UserName, configuration.Password, configuration.VirtualHost, 131072);

channel->DeclareQueue(configuration.QueueName, false, true, false, true);
auto messageBody = "simple json string message nothing fancy"
auto message = AmqpClient::BasicMessage::Create(messageBody);
message->DeliveryMode(AmqpClient::BasicMessage::delivery_mode_t::dm_nonpersistent);
message->ContentType("application/json");
message->Type("XYZRequest");
message->AppId("a guid");
auto headerTable = message->HeaderTable();
headersTable.insert(std::pair<string, string>("Key-1", "value-1"));
headersTable.insert(std::pair<string, string>("Key-2", "value-2"));

channel->BasicPublish(std::string(), configuration.ScoreQueueName, message);

这会将消息发送到队列,我可以在 RabbitMq 管理门户上看到除标头之外的所有详细信息(AppID、类型、消息正文等)。

我错过了什么?它是一些配置还是它是什么?

如果有人能给我一个关于如何发送标头的基本教程的链接,我将不胜感激。

我被困住了。请帮忙。

标签: c++11rabbitmqrabbitmq-c

解决方案


message->HeaderTable()不返回对标头的引用,它返回它的副本。

要设置标题,您必须先构造 headersTable,然后使用message->HeadersTable(headersTable).

Table headersTable;
headersTable.insert(std::pair<string, string>("Key-1", "value-1"));
headersTable.insert(std::pair<string, string>("Key-2", "value-2"));

message->HeadersTable(headersTable);

推荐阅读