rabbitmq 将数据信息 发送到Channel_id为1,交换机为“SY”,绑定的路由key为“DeviceAddCsv”的 C语言实现
时间: 2024-06-09 12:11:52 浏览: 68
可以使用 RabbitMQ 的 C语言客户端库 `librabbitmq` 来实现将数据信息发送到指定的 Channel_id、交换机和路由key。
以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <amqp.h>
#include <amqp_tcp_socket.h>
int main(int argc, char const *const *argv) {
const char *hostname = "localhost";
int port = 5672;
const char *username = "guest";
const char *password = "guest";
const char *exchange = "SY";
const char *routing_key = "DeviceAddCsv";
const char *messagebody = "Hello RabbitMQ";
amqp_socket_t *socket = NULL;
amqp_connection_state_t conn;
conn = amqp_new_connection();
socket = amqp_tcp_socket_new(conn);
if (!socket) {
fprintf(stderr, "Creating TCP socket error\n");
return 1;
}
int status = amqp_socket_open(socket, hostname, port);
if (status) {
fprintf(stderr, "Opening TCP socket error\n");
return 1;
}
amqp_rpc_reply_t login_reply = amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, username, password);
if (login_reply.reply_type != AMQP_RESPONSE_NORMAL) {
fprintf(stderr, "Logging in RabbitMQ server error\n");
return 1;
}
amqp_channel_t channel = 1;
amqp_channel_open(conn, channel);
amqp_rpc_reply_t channel_reply = amqp_get_rpc_reply(conn);
if (channel_reply.reply_type != AMQP_RESPONSE_NORMAL) {
fprintf(stderr, "Opening channel error\n");
return 1;
}
amqp_exchange_declare(conn, channel, amqp_cstring_bytes(exchange), amqp_cstring_bytes("direct"), 0, 0, 0, 0, amqp_empty_table);
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, channel, amqp_cstring_bytes(exchange), amqp_cstring_bytes(routing_key), 0, 0, &props, amqp_cstring_bytes(messagebody));
amqp_channel_close(conn, channel, AMQP_REPLY_SUCCESS);
amqp_connection_close(conn, AMQP_REPLY_SUCCESS);
amqp_destroy_connection(conn);
return 0;
}
```
需要注意的是,以上代码仅为示例,实际使用时需要替换为自己的 RabbitMQ 服务器地址、用户名、密码、交换机名称、路由key和消息内容。
阅读全文