[ 
https://issues.apache.org/jira/browse/AMQ-8320?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matt Pavlovich updated AMQ-8320:
--------------------------------
    Fix Version/s: 6.3.0
                       (was: 6.2.0)

> Implement JMS 2.0 Message.deliveryDelay
> ---------------------------------------
>
>                 Key: AMQ-8320
>                 URL: https://issues.apache.org/jira/browse/AMQ-8320
>             Project: ActiveMQ Classic
>          Issue Type: New Feature
>            Reporter: Matt Pavlovich
>            Assignee: Matt Pavlovich
>            Priority: Major
>              Labels: #jms2
>             Fix For: 6.3.0
>
>          Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> Relevant sections from the JMS 2.0 specification:
> {noformat}
> 3.4.13.JMSDeliveryTime
> When a message is sent, the JMS provider calculates its delivery time by 
> adding the delivery delay value specified on the send method to the time the 
> message 
> was sent(for transacted sends, this is the time the client sends the message, 
> not the time the transaction is committed). It is represented as a long value 
> which 
> is defined as the difference, measured in milliseconds, between the delivery 
> time time and midnight, January 1, 1970 UTC.On return from the send method, 
> the 
> message’s JMSDeliveryTime header field contains this value. When a message is 
> received its JMSDeliveryTime header field contains this same value.A 
> message's 
> delivery time is the earliest time when a provider may make the message 
> visible on the target destination and available for delivery to consumers. 
> Clients must 
> not receive messages before the delivery time has been reached.
> {noformat}
> {noformat}
> 7.9.Message delivery delay
> A client can specify a delivery delay value in milliseconds for each message 
> it sends. This is used to determine the message’s delivery time which is 
> calculated 
> by adding the delivery delay value specified on the send method to the time 
> the message was sent(for transacted sends, this is the time the client sends 
> the 
> message, not the time the transaction is committed).A message’s delivery time 
> is the earliest time when a JMS provider may deliver the message to a 
> consumer. 
> The provider must not deliver messages before the delivery time has been 
> reached.If a message is published to a topic, it will only be added to a 
> durable or 
> non-durable subscription on that topic if the subscription exists at the time 
> the message is sent. An application may specify the required delivery delay 
> using 
> the method setDeliveryDelay on the producer object. This sets the delivery 
> delay of all messages sent using that producer. Note however that the 
> setDeliveryDelay method on Message cannot be used to set the delivery delay 
> of a message.
> See also section 3.4.13 “JMSDeliveryTime”
> {noformat}
> Approach:
> 1. Use scheduler support to delay deliver of message until the specified time
> 2. Throw an exception from the Broker is the field is non-zero and scheduler 
> support is disabled
> 3. MessageProducer sets JMSDeliveryTime header field value
> 4. Note: DeliveryDelay is not honored when set on the Message directly, must 
> be set by the MessageProducer (similar to priority, expiry, etc)
> Optional follow-on (probably separate JIRA):
> 1. Consider DestinationPolicy value to override client setting
> 2. Consider DestinationPolicy value to ignore client setting
> JMS v1.1 compatibility support:
> 1. Add ConnectionFactory method .setDeliveryDelayAsProperty(boolean ) 
> (default: true in 5.17.x) 
> 2. Connection sets the delivery delay value as a Property on produce
> 3. Connection removes the property on consume
> 4. Test over network of brokers
> 5. Test scheduler delivery over network of brokers (ensure no 
> double-scheduling occurs)
> JMS v2.0 support:
> 1. Update to openwire v13 to add header field for deliveryDelay
> 2. Maintain DeliveryDelayAsProperty support 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to