You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Robbie Gemmell (JIRA)" <ji...@apache.org> on 2017/04/19 13:46:41 UTC

[jira] [Comment Edited] (AMQ-6657) ActiveMQ does not respect sender and receiver link settle mode

    [ https://issues.apache.org/jira/browse/AMQ-6657?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15974688#comment-15974688 ] 

Robbie Gemmell edited comment on AMQ-6657 at 4/19/17 1:46 PM:
--------------------------------------------------------------

{quote}
This is exactly the problem I talk about, I need to be sure that the message has been processed, not only enqueued.
{quote}
Ok, so what you want is end-to-end acknowledgement between producer and consumer (or a searate response message)? If so thats entirely unclear from your description. The broker cant do that, and it isnt how brokered queuing works in general: you send messages to the queue, they store and forward messages, acknowledgments are between the clients and the broker both for producing or consuming, not between the clients.

ActiveMQ doesnt support the behaviour you want from 'undeliverableHere', so at best thats a feature request to make it, in which case you may have mroe luck with new features requests for Artemis. At worst, it still wouldnt do what you want since the producer would not have any knowledge of the action by the consumer or the messge being requeued for delivery only to other consumers, so again youd need to look at doing something like request-response based messaging, or if you really want end-to-end acknoweldgement, perhaps look an entirely different solution. One example would be Qpid Dispatch router, which can support end-to-end acknowledgement because it is a router rather than a broker and never takes ownership of a message.


was (Author: gemmellr):
{quote}
This is exactly the problem I talk about, I need to be sure that the message has been processed, not only enqueued.
{quote}
Ok, so what you want is end-to-end acknowledgement between producer and consumer (or a searate response message)? If so thats entirely unclear from your description. The broker cant do that, and it isnt how brokered queuing works in generally: you send messages to the queue, they store and forward messages, acknowledgments are between the clients and the broker both for producing or consuming, not between the clients.

ActiveMQ doesnt support the behaviour you want from 'undeliverableHere', so at best thats a feature request to make it, in which case you may have mroe luck with new features requests for Artemis. At worst, it still wouldnt do what you want since the producer would not have any knowledge of the action by the consumer or the messge being requeued for delivery only to other consumers, so again youd need to look at doing something like request-response based messaging, or if you really want end-to-end acknoweldgement, perhaps look an entirely different solution. One example would be Qpid Dispatch router, which can support end-to-end acknowledgement because it is a router rather than a broker and never takes ownership of a message.

> ActiveMQ does not respect sender and receiver link settle mode
> --------------------------------------------------------------
>
>                 Key: AMQ-6657
>                 URL: https://issues.apache.org/jira/browse/AMQ-6657
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.14.4
>            Reporter: Ilya Lebedev
>
> Here is the long story
> http://activemq.2283324.n4.nabble.com/How-to-setup-policy-for-client-side-message-acceptance-td4724961.html
> Use case
> # setup policy for
> #* sender setter mode 'unsettled'
> #* receiver settle mode 'second'
> # connect to brocker
> Expected result
> * broker respects requested policy
> Actual result
> * broker resets
> ** sender settle mode - 'settle'
> ** receiver settle mode - 'first'
> Log
> {code}
>   amqp10:framing sending frame:  @attach(18) [name='test_d5c61642-99b0-4315-bef5-7bffdf0f8d64' handle=0 role=false senderSettleMode=0 receiverSettleMode=1 source=@source(40) [address='localhost' durable=0 expiryPolicy='session-end' timeout=0 dynamic=false dynamicNodeProperties={} distributionMode=null filter={} defaultOutcome=null outcomes=null capabilities=null] target=@target(41) [address='test' durable=0 expiryPolicy='session-end' timeout=0 dynamic=false dynamicNodeProperties={} capabilities=null] unsettled={} incompleteUnsettled=false initialDeliveryCount=1 maxMessageSize=0 offeredCapabilities=null desiredCapabilities=null properties={}] +1ms
>   amqp10:trace raw: [0000009602000001005312c0890ea129746573745f64356336313634322d393962302d343331352d626566352d376266666466306638643634434250005001005328c0260ba1096c6f63616c686f737443a30b73657373696f6e2d656e644342c1010040c10100404040005329c01b07a1047465737443a30b73657373696f6e2d656e644342c1010040c10100425201444040c10100] +0ms
>   amqp10:connection Rx: 0000008602000000005312c07907a129746573745f64356336313634322d393962302d343331352d626566352d376266666466306638643634434150025000005328c02308a1096c6f63616c686f737443a30b73657373696f6e2d656e644342c1010040c10100005329c01a06a1047465737443a30b73657373696f6e2d656e644342c101000000002402000000005313c017075201707fffffff5201707fffffff43520170000003e8 +1ms
>   amqp10:framing received frame:  @attach(18) [name='test_d5c61642-99b0-4315-bef5-7bffdf0f8d64' handle=0 role=true senderSettleMode=2 receiverSettleMode=0 source=@source(40) [address='localhost' durable=0 expiryPolicy='session-end' timeout=0 dynamic=false dynamicNodeProperties={} distributionMode=null filter={} defaultOutcome=null outcomes=null capabilities=null] target=@target(41) [address='test' durable=0 expiryPolicy='session-end' timeout=0 dynamic=false dynamicNodeProperties={} capabilities=null] unsettled={} incompleteUnsettled=false initialDeliveryCount=null maxMessageSize=0 offeredCapabilities=null desiredCapabilities=null properties={}] +2ms 
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)