【问题标题】:Using C++ to write an image to a RabbitMQ queue使用 C++ 将图像写入 RabbitMQ 队列
【发布时间】:2018-10-20 19:00:42
【问题描述】:

我正在使用SimpleAmqpClient,这是一个与 RabbitMQ 代理一起使用的 C++ 库。我可以发送和接收字符串,即“hello world”。这是执行此操作的program

#include <stdlib.h>
#include <stdio.h>
#include <SimpleAmqpClient/SimpleAmqpClient.h>
#include <iostream>
#include "SimplePublisher.h"

using namespace AmqpClient;
using namespace std;
int main()
{
    char *szBroker = getenv("AMQP_BROKER");
    Channel::ptr_t channel;
    if (szBroker != NULL)
        channel = Channel::Create(szBroker);
    else
        channel = Channel::Create("192.168.66.1", 5672);

    string a="hello world";

   // SimplePublisher pub(channel);
    boost::shared_ptr<SimplePublisher> pub=SimplePublisher::Create(channel, "wt");
        pub->Publish(a);
}

它调用第一个接受字符串的函数。

void SimplePublisher::Publish(const std::string &message)
{
    BasicMessage::ptr_t outgoing_message = BasicMessage::Create();
    outgoing_message->Body(message);

    Publish(outgoing_message);
}

void SimplePublisher::Publish(const BasicMessage::ptr_t message)
{
    m_channel->BasicPublish(m_publisherExchange, "", message);
}

我想将 JPEG 图像写入不是字符串的队列。

有人可以评论我将如何做到这一点吗?

【问题讨论】:

    标签: c++ boost rabbitmq shared-ptr


    【解决方案1】:

    你有两个选择。

    1. 将图像字节序列化为Base-64 encoded string

    2. 直接将图片发布为字节数组。

    需要注意的是,RabbitMQ 在处理非常小的 (

    【讨论】:

    • 直接作为字节数组发布的单独问题我会将字节读入字符串吗?
    • 不,虽然我不直接熟悉 C++ 客户端(如果您使用的是 .NET,它与 C# 客户端相同),但有一个属性可以将正文设置为直接一个字节数组(不需要转换)。
    • 好的,谢谢,我会进一步调查,但void SimplePublisher::Publish(const std::string &amp;message) 需要一个字符串参数,这就是我这么认为的原因。
    • 那不是 Publish 方法的完整实现。
    • 它看起来像这样:public abstract void _Private_BasicPublish(string exchange, string routingKey, bool mandatory, IBasicProperties basicProperties, byte[] body);'
    猜你喜欢
    • 1970-01-01
    • 2012-05-14
    • 2020-12-07
    • 1970-01-01
    • 2022-11-17
    • 2015-06-17
    • 2021-09-03
    • 2018-01-09
    • 2018-03-12
    相关资源
    最近更新 更多