主要分amqd_listen.c和amqd_sendstring.c文件:
1.创建一个新连接
conn = amqp_new_connection();
2.创建一个新socket
socket = amqp_tcp_socket_new(conn);
3.打开socket,设置IP、port等
status = amqp_socket_open(socket, hostname, port);
4.登录服务器
amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, "guest", "guest")
5.打开通道,关联conn和channel
amqp_channel_open(conn, 1);
6.判断channel状态是否打开
amqp_get_rpc_reply(conn)
7.设置amqp的参数
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 */
8.设置publish参数
amqp_basic_publish(conn,1,amqp_cstring_bytes(exchange),amqp_cstring_bytes(routingkey),0,0,&props,amqp_cstring_bytes(messagebody))//messagebody为发布的消息内容
9.关闭channel
amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS)
10.关闭连接
amqp_connection_close(conn, AMQP_REPLY_SUCCESS)
11.销毁连接
amqp_destroy_connection(conn)
**以上为发送的步骤**
**以下为接受的步骤**
其中前6步骤为一样,
7.声明队列
amqp_queue_declare(conn, 1, amqp_empty_bytes, 0, 0, 0, 1,
amqp_empty_table)
8.分配队名
amqp_bytes_malloc_dup(r->queue);
9.用相关参数队名、routing_key、exhange等传输绑定amqp_queue_bind(conn, 1, queuename, amqp_cstring_bytes(exchange), amqp_cstring_bytes(bindingkey),
amqp_empty_table);
10.设置消费消息参数
amqp_basic_consume(conn, 1, queuename, amqp_empty_bytes, 0, 1, 0, amqp_empty_table);
11.死循环中
定义信封载体 amqp_envelope_t envelope;
释放buffers amqp_maybe_release_buffers(conn);
把收到的相关信息放入信封中envelope: amqp_consume_message(conn, &envelope, NULL, 0);
使用消息内容 what you want to do
毁掉信封 amqp_destroy_envelope(&envelope);
12关闭通道
amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS)
13.关闭连接
amqp_connection_close(conn, AMQP_REPLY_SUCCESS)
14摧毁连接
amqp_destroy_connection(conn)