RabbitMQ : 实现数据持久化(Persistent)

注意:该文所使用的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:非持久化


你可能感兴趣的:(rabbitmq,持久化,persistent)