[ https://issues.apache.org/jira/browse/NIFI-6721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17046950#comment-17046950 ]
Tim Chermak commented on NIFI-6721: ----------------------------------- Message from our developer/user: JMSTemplate shouldn't have setExpiration because that is one of the fields that a user can't set directly. The user should call setTimeToLive, and the provider client library will set the expiration based on the timeToLive (TTL). The real problem is explained earlier. The documentation for PublishJMS says that the JMSExpiration is set with the attribute jms_expiration. However, this value is really time-to-live in milliseconds. The JMSExpiration is calculated by the provider client library as; expiration = timestamp + ttl So, this nifi flowfile attribute really be named jms_ttl Change the name of the flowfile attribute to jms_ttl, and pass that to setTimeToLive. This works for messages published by NiFi, but for messages received by NiFi, you have to recalculate the TTL. jms_ttl = expiration - timestamp Since there may be delays in processing the message, it may be better to use the current time jsm_ttl = expiration - now() You want to set the jms_expiration attribute of a flowfile with the value in the JMS message, and you want to add the flowfile attribute jms_ttl as calculated above. > jms_expiration attribute problem > -------------------------------- > > Key: NIFI-6721 > URL: https://issues.apache.org/jira/browse/NIFI-6721 > Project: Apache NiFi > Issue Type: Bug > Components: Extensions > Affects Versions: 1.8.0 > Environment: Linux CENTOS 7 > Reporter: Tim Chermak > Priority: Minor > > The documentation for PublishJMS indicates the JMSExpiration is set with the > attribute jms_expiration. However, this value is really the time-to-live > (ttl) in milliseconds. The JMSExpiration is calculated by the provider > library as "expiration = timestamp + ttl" > So, this NiFi flowfile attribute should really be named jms_ttl. The current > setup works correctly when NiFi creates and publishes a message, but has > problems when you try to republish a JMS message. > GetFile -> UpdateAttibute -> PublishJMS creates a valid JMSExpiration in the > message, however, when a JMS has the expiration set, ConsumeJMS -> PublishJMS > shows an error in the nifi.--app.log file: > "o.apache.nifi.jms.processors.PublishJMS PublishJMS[id=016b1005-xxxxxx...] > Incompatible value for attribute jms_expiration [1566428032803] is not a > number. Ignoring this attribute." > Looks like ConsumeJMS set the flowfile attribute to the expiration value > rather than the time-ti-live value. Time-to-live should be jms_ttl = > expiration - current_time. > -- This message was sent by Atlassian Jira (v8.3.4#803005)