簡體   English   中英

Tibco JMS(EMS)每個客戶的TimeToLive?

[英]Tibco JMS (EMS) TimeToLive per client?

我還無法單獨從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屬性(在這種情況下,將覆蓋在此目標中接收的所有消息的JMSExpiration)。 不能為每個消費者設置。

一種選擇是創建從主題到僅用戶應用程序將收聽的自定義隊列的橋梁,並將此隊列的“ expiration”屬性設置為0(無限制)。 然后,無論其JMSExpiration值如何,所有在該主題上發布的所有消息都將被復制到此隊列,並且永遠不會過期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM