gpt4 book ai didi

java - 每个客户端的 Tibco JMS (EMS) TimeToLive?

转载 作者:行者123 更新时间:2023-11-30 04:02:31 24 4
gpt4 key购买 nike

我无法仅通过 Google 找出这个问题。我正在连接到一个非持久 EMS 主题,该主题发布一组数据的更新。如果我跳过一些更新,也没关系,因为接下来的更新无论如何都会覆盖它。

在 EMS 主题上发布的消息数量相当多,有时出于某种原因消费者会落后。在客户端连接端有没有办法确定消息的“生存时间”?我知道其他经纪商上也有,但特别是在 Tibco 上,我一直无法弄清楚它是否可能,只是这个参数绝对可以在服务器端为所有客户端设置(这对我来说不是一个选项)。

我正在创建连接工厂,然后使用以下代码创建 Apache Camel jms 端点:

    TibjmsConnectionFactory connectionFactory = new TibjmsConnectionFactory();
connectionFactory.setServerUrl(properties.getProperty(endpoints.getServerUrl()));
connectionFactory.setUserName(properties.getProperty(endpoints.getUsername()));
connectionFactory.setUserPassword(properties.getProperty(endpoints.getPassword()));

JmsComponent emsComponent = JmsComponent.jmsComponent(connectionFactory);
emsComponent.setAsyncConsumer(true);
emsComponent.setConcurrentConsumers(Integer.parseInt(properties.getProperty("jms.concurrent.consumers")));
emsComponent.setDeliveryPersistent(false);
emsComponent.setClientId("MyClient." + ManagementFactory.getRuntimeMXBean().getName() + "." + emsConnectionNumber.getAndIncrement());
return emsComponent;

我正在使用 tibjms-6.0.1、tibjmsufo-6.0.1 和其他各种 tib***-6.0.1。

最佳答案

JMSExpiration 属性可以按消息设置,或者更全局地在目标级别设置(在这种情况下,在此目标中收到的所有消息的 JMSExpiration 都会被覆盖) 。不能为每个消费者设置。

一种选择是创建从主题到自定义队列的桥梁,只有您的消费者应用程序才会监听该队列,并将该队列的“过期”属性设置为 0(无限制)。然后,在该主题上发布的所有消息都将被复制到此队列,并且永远不会过期,无论其 JMSExpiration 值如何。

关于java - 每个客户端的 Tibco JMS (EMS) TimeToLive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21631569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com