7.2. 创建持久订阅
持久化订阅是远程服务器上的一个状态,代表一个消息接收器。通常,当客户端关闭时,消息接收方会被丢弃。但是,由于持久订阅是持久的,客户端可以从它们分离,之后再重新连接。当客户端重新附加时,任何在分离时收到的消息都可用。
持久化订阅通过组合客户端容器 ID 和接收器名称来组成订阅 ID 来唯一标识。它们必须具有稳定的值,以便可以恢复订阅。
要创建持久订阅,请按照以下步骤执行:
将连接容器 ID 设置为 stable 值,如
client-1
:ClientOptions clientOptions = new(); clientOptions.Id = "client-1"; IClient client = IClient.Create(clientOptions);
ClientOptions clientOptions = new(); clientOptions.Id = "client-1"; IClient client = IClient.Create(clientOptions);
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将接收器配置为类似于主题订阅。
ReceiverOptions receiverOptions = new ReceiverOptions(); receiverOptions.SourceOptions.Capabilities = new String [] {"topic", "shared"}; receiverOptions.SourceOptions.DurabilityMode = DurabilityMode.UnsettledState; receiverOptions.SourceOptions.ExpiryPolicy = ExpiryPolicy.Never; using IReceiver receiver = connection.OpenDurableReceiver(address, "sub-1", receiverOptions);
ReceiverOptions receiverOptions = new ReceiverOptions(); receiverOptions.SourceOptions.Capabilities = new String [] {"topic", "shared"}; receiverOptions.SourceOptions.DurabilityMode = DurabilityMode.UnsettledState; receiverOptions.SourceOptions.ExpiryPolicy = ExpiryPolicy.Never; using IReceiver receiver = connection.OpenDurableReceiver(address, "sub-1", receiverOptions);
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要从订阅分离,请关闭接收器。
删除订阅。
receiver.CloseAsync();
receiver.CloseAsync();
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您没有关闭接收方,则持久订阅将保留。