auto evbase = event_base_new();LibEventHandlerMyError hndl(evbase);// 建立连接AMQP::TcpConnection connection(&hndl, AMQP::Address("amqp://admin:eyJrZXlJZC...@amqp-xxx.rabbitmq.ap-sh.public.tencenttdmq.com:5672/amqp-xxx|vhost-cpp"));// 服务地址格式为 amqp://username:password@host:port/vhost// 建立通道AMQP::TcpChannel channel(&connection);channel.onError([&evbase](const char *message) {std::cout << "Channel error: " << message << std::endl;event_base_loopbreak(evbase);});
// 声明交换机channel.declareExchange(exchange_name, AMQP::ExchangeType::direct);// 发送消息到交换机channel.publish(exchange_name, routing_key, "Hello client this is a info message");event_base_dispatch(evbase);event_base_free(evbase);
参数 | 说明 |
exchange_name | Exchange 名称,可在控制台 Exchange 列表获取。 |
routing_key | 消息队列支持的routing key |
ConnHandler handler;// 建立连接AMQP::TcpConnection connection(handler, AMQP::Address(host, part, AMQP::Login(username, password), vhost));// 建立通道AMQP::TcpChannel channel(&connection);channel.onError([&handler](const char *message) {std::cout << "Channel error: " << message << std::endl;handler.Stop();});
// 声明交换机channel.declareExchange(exchange_name, AMQP::ExchangeType::direct);// 声明消息队列channel.declareQueue(queue_name, AMQP::durable);// 绑定消息队列到交换机channel.bindQueue(exchange_name, queue_name, routing_key);
参数 | 说明 |
exchange_name | Exchange 名称,可在控制台 Exchange 列表获取。 |
queue_name | 消息队列名称,可在控制台 Queue 列表获取。 |
routing_key | 消息队列支持的routing key |
// 订阅消息channel.consume(queue_name).onReceived([&channel](const AMQP::Message &msg, uint64_t tag, bool redelivered) {// 处理消息std::cout << "Received: " << msg.body() << std::endl;// 回复ack, 消费失败可回复rejectchannel.ack(tag);});handler.Start();
参数 | 说明 |
queue_name | 消息队列名称,可在控制台 Queue 列表获取。 |
本页内容是否解决了您的问题?