注意:该文所使用的RabbitMQ客户端为RabbitMQ-C.
数据是否持久,即使在RabbitMQ-Server服务重启了,原来没有及时得到处理的数据依然能够保存下来,在服务重启之后,即可将原来的数据读到内存当中。
实现方式:
在生产者向RabbitMQ发送数据的时候,设置amqp_basic_publish函数接口调用中的amqp_basic_properties_t const *properties,如下:
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 = AMQP_DELIVERY_PERSISTENT; /* persistent delivery mode */
die_on_error(amqp_basic_publish(conn,
1,
amqp_cstring_bytes("amq.direct"),
amqp_cstring_bytes("test queue"),
0,
0,
&props,
message_bytes),
"Publishing");
结构体amqp_basic_properties_t的成员content_type即可设置是否需要实现数据持久化,其它字段请根据实际使用情况填写。(AMQP_DELIVERY_PERSISTENT:持久化 AMQP_DELIVERY_NONPERSISTENT:非持久化)