我正在配置一个Apache Artemis消息代理。代理将接受大文件,下游消费者访问该主题以处理最新文件。现在我想知道如何使最新文件可用于开发运行。因为消息一天只到达几次,所以测试运行需要访问最近发送的几条消息,不能等待下一条。
对于生产和登台系统,我发现持久订阅工作良好。我已经改编了ApacheCamel配置作为示例。以下是两个接收消息的消费者,每个消费者都使用持久订阅:
<route id="inbox">
<from uri="file:inbox"/>
<to uri="activemq:topic:testing"/>
</route>
<route id="outbox-staging">
<from uri="activemq:topic:testing?clientId=staging&durableSubscriptionName=staging"/>
<to uri="file:outbox-staging"/>
</route>
<route id="outbox-production">
<from uri="activemq:topic:testing?clientId=production&durableSubscriptionName=production"/>
<to uri="file:outbox-production"/>
</route>
这很好。如果一个消费者离线,当它恢复在线时,它将接收消息。现在如果另一个消费者加入测试;
<route id="outbox-testing" streamCache="true">
<from uri="activemq:topic:testing?clientId=my-local-consumer&durableSubscriptionName=my-local-consumer"/>
<to uri="file:outbox-local"/>
</route>
由于订阅之前不存在,消费者将不得不等待新消息。我正在寻找的是新的订阅者立即准备好可用的消息。我找到了不同的概念名称,如<code>预取策略,<code>消费者窗口大小,或“追溯消费者”。但我不清楚哪些术语适用于ApacheArtemis,以及如何设置它们,因为示例大多涉及ApacheActiveMQ。
如何配置 Artemis,以便加入新订阅的使用者获得过去的消息?
< code>prefetchPolicy不适用于ActiveMQ Artemis。是针对ActiveMQ 5.x的。
< code>consumerWindowSize确实适用于ActiveMQ Artemis。
但是,预取策略
和使用者WindowSize
都不适用于这种情况,因为它们都与“流控制”有关,并且与将“丢失的”消息放入 JMS 主题订阅无关。
“追溯消费者”功能适用于ActiveMQ 5.x。类似功能(称为“追溯地址”)将在ActiveMQ Artemis 2.11中提供。它作为Artemis-2504的一部分实现。
因此,您有几个选择:
的主
分支构建您自己的 ActiveMQ Artemis 版本。在我们的业务需求中,我们需要将更新传输到分布在全国各地的数千个客户端。问题是,许多这些客户端使用3G网络连接到我们,因此,发生了许多连接/断开连接...我们需要提供的更新是诸如“企业A不能再兑现”或“企业B能够再次兑现”之类的东西,我们正在考虑使用ActiveMQ持久主题来提供这些更新。我的理解是,一旦客户端连接到持久主题,即使他断开连接,每当他回来时,他都会在脱机时收到发送到该主题的消息。最大的
有可能做到这一点吗?
我有一个使用ActiveMQ的JMS生产者/订阅者的简单Spring应用程序,配置如下: 我试过所有可能的解决办法,但没有一个奏效。我们非常感谢任何帮助
我遵循这篇文档来实现上述场景。 那么,有没有人可以建议我如何一次使用多个订阅者从主题中读取消息。
在kafka中,我在中将保留策略设置为3天 主题将设置为(48h)。 但是,文件夹/tmp/kafka-logs中仍然有旧数据,并且没有任何数据被删除。我等了几个小时才换了那些房产。