用c++写一个rabbitmq发布模式的代码
时间: 2023-03-11 13:06:36 浏览: 150
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <amqp.h>int main(int argc, char const *argv[])
{
// 初始化连接参数
amqp_connection_state_t conn = amqp_new_connection(); // 建立一个socket连接
amqp_socket_t *socket = amqp_tcp_socket_new(conn);
if (!socket) {
printf("Failed to create socket!\n");
return 1;
} // 建立连接
int status = amqp_socket_open(socket, "localhost", 5672);
if (status) {
printf("Failed to open socket!\n");
return 1;
} // 登录
amqp_rpc_reply_t login_reply = amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, "guest", "guest");
if (login_reply.reply_type != AMQP_RESPONSE_NORMAL) {
printf("Failed to login!\n");
return 1;
} // 打开一个通道
amqp_channel_open(conn, 1);
amqp_get_rpc_reply(conn); // 声明一个交换器
amqp_exchange_declare(conn, 1, amqp_cstring_bytes("my_exchange_name"),
amqp_cstring_bytes("direct"), 0, 0, 0, 0, amqp_empty_table);
amqp_get_rpc_reply(conn); // 发布消息
const char *messagebody = "Hello World!";
amqp_basic_properties_t props;
props._flags = AMQP_BASIC_CONTENT_TYPE_FLAG | AMQP_BASIC_DELIVERY_MODE_FLAG;
props.content_type = amqp_cstring_bytes("text/plain");
props.delivery_mode = 2; // persistent delivery mode
amqp_basic_publish(conn, 1, amqp_cstring_bytes("my_exchange_name"),
amqp_cstring_bytes("routingkey"), 0, 0, &props,
amqp_cstring_bytes(messagebody)); // 关闭连接
amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS);
amqp_connection_close(conn, AMQP_REPLY_SUCCESS);
amqp_destroy_connection(conn); return 0;
}我可以为您解释一下这段代码吗?这段代码可以用来实现RabbitMQ发布模式的功能。首先,它会建立一个socket连接,然后登录,打开一个通道,声明一个交换器,最后发布消息,并关闭连接。
阅读全文