C++ client code below
#include <string>
#include <iostream>
#include <proton/connection_options.hpp>
#include <proton/container.hpp>
#include <proton/default_container.hpp>
#include <proton/message.hpp>
#include <proton/message_id.hpp>
#include <proton/messaging_handler.hpp>
#include <proton/thread_safe.hpp>
#include <proton/tracker.hpp>
#include <proton/value.hpp>
class Broadcaster : public proton::messaging_handler
{
private:
std::string _account;
std::string _password;
std::string _host;
unsigned int _port;
unsigned int _count;
unsigned int _size;
unsigned int _sent;
unsigned int _confirmed;
std::string _exchange;
std::string _routingKey;
proton::sender _sender;
public:
explicit Broadcaster(const std::string &account,
const std::string &password,
const std::string &host,
unsigned int port,
const std::string &exchange,
const std::string &routingKey,
unsigned int count,
unsigned int size)
: _account(account)
, _password(password)
, _host(host)
, _port(port)
, _count(count)
, _size(size)
, _sent(0)
, _confirmed(0)
, _exchange(exchange)
, _routingKey(routingKey)
{
}
void on_container_start(proton::container &c)
{
proton::connection_options connectionOptions;
connectionOptions.sasl_allow_insecure_mechs(true);
connectionOptions.sasl_allowed_mechs("PLAIN");
c.client_connection_options(connectionOptions);
std::string url = "amqp://" + _account + ":" + _password + "@" +
_host + ":" + std::to_string(_port) + "/" + _exchange;
_sender = c.open_sender(url);
}
void on_sendable(proton::sender &s)
{
while (s.credit() && _sent < _count)
{
proton::message msg;
msg.id(_sent + 1);
msg.subject(_routingKey);
msg.body(std::string(_size, '*'));
msg.durable(true);
s.send(msg);
_sent++;
std::cout << "-I sent " << _sent << " of " << _count <<
std::endl;
}
}
void on_tracker_accept(proton::tracker &t)
{
_confirmed++;
if (_confirmed == _count)
{
std::cout << "-I- All messages (" << _confirmed << ") confirmed"
<< std::endl;
t.connection().close();
}
}
void on_transport_close(proton::transport &t)
{
_sent = _confirmed;
}
void run()
{
try
{
proton::default_container(*this).run();
}
catch (const std::exception &error)
{
std::cerr << "-E- Caught exception: " << error.what() <<
std::endl;
throw error;
}
}
};
int main(void)
{
Broadcaster("C7",
"C7",
"pc1wj611",
20001,
"broadcast",
"broadcast.C7_CashTransaction",
1000,
1024).run();
return 0;
}
--
Sent from: http://qpid.2158936.n2.nabble.com/Apache-Qpid-users-f2158936.html
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]