.net core 阅读';旧的';来自带有Apache.NMS的C#(.net Core)的ActiveMQ虚拟主题的消息

.net core 阅读';旧的';来自带有Apache.NMS的C#(.net Core)的ActiveMQ虚拟主题的消息,.net-core,activemq,apache-nms,.net Core,Activemq,Apache Nms,如何使用Apache.NMS阅读有关虚拟主题的消息 在创建连接、会话和使用者之后,我会执行:“consumer.Receive();” 在代码运行时发送的消息将被接收,但在此之前已经在主题上的任何消息都不会被接收 我尝试在主题中添加“?consumer.retroactive=true”,但这似乎没有任何作用 我见过使用持久订阅者的例子,但当使用虚拟主题时,我不应该这样做。解决: 问题是我读错了地方:我读的是一个主题,而我应该读的是一个队列 虚拟主题是主题,但您必须从使用者队列中使用它们 因此,

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

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

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

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

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

解决:

问题是我读错了地方:我读的是一个主题,而我应该读的是一个队列

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

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


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

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