8.2. 创建持久订阅
持久化订阅是远程服务器上的一个状态,代表一个消息接收器。通常,当客户端关闭时,消息接收方会被丢弃。但是,由于持久订阅是持久的,客户端可以从它们分离,之后再重新连接。当客户端重新附加时,任何在分离时收到的消息都可用。
持久化订阅通过组合客户端容器 ID 和接收器名称来组成订阅 ID 来唯一标识。它们必须具有稳定的值,以便可以恢复订阅。
要创建持久订阅,请按照以下步骤执行:
将连接容器 ID 设置为 stable 值,如
client-1:proton::container cont {handler, "client-1"};使用稳定名称(如
sub-1)创建一个接收器,并通过设置 persistence_mode 和配置接收器源:expiry_policy选项来为持久性void on_container_start(proton::container& cont) override { proton::connection conn = cont.connect("amqp://example.com"); proton::receiver_options opts {}; proton::source_options sopts {}; opts.name("sub-1"); sopts.durability_mode(proton::source::UNSETTLED_STATE); sopts.expiry_policy(proton::source::NEVER); opts.source(sopts); conn.open_receiver("notifications", opts); }
要从订阅分离,请使用 proton::receiver::detach () 方法。要终止订阅,请使用 proton::receiver::close () 方法。
如需更多信息,请参阅 durable-subscribe.cpp 示例。