rabbitmq发送接收流程

主要分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)
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值