【问题标题】:Reading 'old' messages from ActiveMQ virtual topic from C# (.net Core) with Apache.NMS使用 Apache.NMS 从 C# (.net Core) 读取 ActiveMQ 虚拟主题的“旧”消息
【发布时间】:2020-05-06 02:30:29
【问题描述】:

如何使用 Apache.NMS 阅读有关虚拟主题的消息?

在创建连接、会话和消费者之后,我执行:“consumer.Receive();”。

在该代码运行时发送的消息会被接收,但在此之前已经在主题上的任何消息都不会被接收。

我尝试在主题中添加“?consumer.retroactive=true”,但这似乎没有任何作用。

我见过使用持久订阅者的示例,但在使用虚拟主题时,我不应该这样做。

【问题讨论】:

  • 请记住,虚拟主题(虽然功能强大)是 ActiveMQ 5.x 独有的,因此如果需要,围绕其功能构建的任何应用程序都很难(如果不是不可能)移植到另一个代理。如果可能的话,建议使用标准化解决方案,例如 JMS 2 中的共享主题订阅。

标签: .net-core activemq apache-nms


【解决方案1】:

已解决:

问题是我从错误的地方阅读:我正在阅读一个主题,而我应该从队列中阅读。

虚拟主题是主题,但您必须从消费者队列中使用它们。

因此,消息被推送到“VirtualTopic.YourTopicName”,您应该从名为“Consumer.YourConsumerName.VirtualTopic.YourTopicName”的 QUEUE 中读取。 (显然这个队列应该在任何消息发布之前就存在。)

“旧”消息未被阅读的原因是它们不存在。

【讨论】:

    猜你喜欢
    • 2012-01-03
    • 2019-11-17
    • 2020-09-06
    • 2012-12-06
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    相关资源
    最近更新 更多