我认为一个简单的例子会更好地描述我的问题。
例如,假设有一个名为“A”的主题,我已经生成了 100 条消息(message1...message100)。我已经使用类型为exclusive的订阅“A_1”消费并确认了多达50条消息。由于某种原因,我的应用程序关闭了,因此在重新启动应用程序时,我需要再次读取消息 1。这能实现吗?我认为可以创建一个新订阅(“A_2”)并再次开始阅读消息,但我不确定“A_2”是否会从 message1 或 message51 开始阅读......任何方向或提示都会很棒!< /p>
提前致谢
答案 0 :(得分:2)
是的,这可以实现,所需要做的就是创建一个新订阅,例如"A_2",并使用 subscriptionInitialPosition 参数指定您要从最早的可用消息开始使用消息,如下所示:
return getClient().newConsumer()
.topic(topic)
.subscriptionName("A_2")
.subscriptionType(SubscriptionType.Exclusive)
.subscriptionInitialPosition(SubscriptionInitialPosition.Earliest)
.subscribe();
这假设消息由于消息保留政策而未被删除。
答案 1 :(得分:0)
在 Pulsar 中将消息的接收和确认分开意味着可以编写您的应用程序,以便它仅在不再需要消息时才确认消息。
考虑仅在您确定应用程序不再需要消息时才确认它可能很有用。
否则,@david-kjerrumgaard 所说的。