You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Edson Richter <ed...@hotmail.com> on 2022/03/03 15:08:40 UTC

Artemis 2.20.0 + Stomp protocol: to Ack or to Nack, that's the question

I’m writing a Go client using Stomp protocol.
I’ve read all the chapter about Stomp protocol in Artemis Docs. I understand I can’t use transactional Ack as per this paragraph:


“The STOMP specification identifies transactional acknowledgements as an optional feature. Support for transactional acknowledgements is not implemented in Apache ActiveMQ Artemis. The ACK frame can not be part of a transaction. It will be ignored if its transaction header is set.”


I’m not using transaction header - but then, when I do NACK on a message, it is still being consumed from the queue.
I think I misunderstood the documentation.
Can I NACK a message using Stomp protocol? If yes, what happens to the message (or “why it is being consumed from the queue”)?


Thanks for the clarification,

ER.


Enviado do Email<https://go.microsoft.com/fwlink/?LinkId=550986> para Windows


Re: Artemis 2.20.0 + Stomp protocol: to Ack or to Nack, that's the question

Posted by Justin Bertram <jb...@apache.org>.
The current behavior is hard-coded and is not configurable. A Jira [1] was
opened about this a while back.

I'll look at amending the documentation.


Justin

[1] https://issues.apache.org/jira/browse/ARTEMIS-1983

On Thu, Mar 3, 2022 at 11:49 AM Edson Richter <ed...@hotmail.com>
wrote:

> Hi, Justin, thanks for you very fast answer.
>
> One more question about “ActiveMQ Artemis discards the message”: it is a
> default behavior that can be customized someway, or this is a fixed by code
> behavior?
> I think this clarification would be a great addition to documents.
>
>
> Thanks,
>
> ER.
>
>
> Enviado do Email<https://go.microsoft.com/fwlink/?LinkId=550986> para
> Windows
>
> De: Justin Bertram<ma...@apache.org>
> Enviado:quinta-feira, 3 de março de 2022 12:17
> Para: users@activemq.apache.org<ma...@activemq.apache.org>
> Assunto: Re: Artemis 2.20.0 + Stomp protocol: to Ack or to Nack, that's
> the question
>
> Yes, STOMP supports a NACK frame. The STOMP 1.2 specification [1] says this
> about the NACK frame:
>
> > NACK is the opposite of ACK. It is used to tell the server that the
> client did not consume the message. The server can then either send the
> message to a different client, discard it, or put it in a dead letter
> queue. The exact behavior is server specific.
>
> ActiveMQ Artemis discards the message.
>
>
> Justin
>
> [1] https://stomp.github.io/stomp-specification-1.2.html#NACK
>
> On Thu, Mar 3, 2022 at 9:09 AM Edson Richter <ed...@hotmail.com>
> wrote:
>
> > I’m writing a Go client using Stomp protocol.
> > I’ve read all the chapter about Stomp protocol in Artemis Docs. I
> > understand I can’t use transactional Ack as per this paragraph:
> >
> >
> > “The STOMP specification identifies transactional acknowledgements as an
> > optional feature. Support for transactional acknowledgements is not
> > implemented in Apache ActiveMQ Artemis. The ACK frame can not be part of
> a
> > transaction. It will be ignored if its transaction header is set.”
> >
> >
> > I’m not using transaction header - but then, when I do NACK on a message,
> > it is still being consumed from the queue.
> > I think I misunderstood the documentation.
> > Can I NACK a message using Stomp protocol? If yes, what happens to the
> > message (or “why it is being consumed from the queue”)?
> >
> >
> > Thanks for the clarification,
> >
> > ER.
> >
> >
> > Enviado do Email<https://go.microsoft.com/fwlink/?LinkId=550986> para
> > Windows
> >
> >
>
>

RES: Artemis 2.20.0 + Stomp protocol: to Ack or to Nack, that's the question

Posted by Edson Richter <ed...@hotmail.com>.
Hi, Justin, thanks for you very fast answer.

One more question about “ActiveMQ Artemis discards the message”: it is a default behavior that can be customized someway, or this is a fixed by code behavior?
I think this clarification would be a great addition to documents.


Thanks,

ER.


Enviado do Email<https://go.microsoft.com/fwlink/?LinkId=550986> para Windows

De: Justin Bertram<ma...@apache.org>
Enviado:quinta-feira, 3 de março de 2022 12:17
Para: users@activemq.apache.org<ma...@activemq.apache.org>
Assunto: Re: Artemis 2.20.0 + Stomp protocol: to Ack or to Nack, that's the question

Yes, STOMP supports a NACK frame. The STOMP 1.2 specification [1] says this
about the NACK frame:

> NACK is the opposite of ACK. It is used to tell the server that the
client did not consume the message. The server can then either send the
message to a different client, discard it, or put it in a dead letter
queue. The exact behavior is server specific.

ActiveMQ Artemis discards the message.


Justin

[1] https://stomp.github.io/stomp-specification-1.2.html#NACK

On Thu, Mar 3, 2022 at 9:09 AM Edson Richter <ed...@hotmail.com>
wrote:

> I’m writing a Go client using Stomp protocol.
> I’ve read all the chapter about Stomp protocol in Artemis Docs. I
> understand I can’t use transactional Ack as per this paragraph:
>
>
> “The STOMP specification identifies transactional acknowledgements as an
> optional feature. Support for transactional acknowledgements is not
> implemented in Apache ActiveMQ Artemis. The ACK frame can not be part of a
> transaction. It will be ignored if its transaction header is set.”
>
>
> I’m not using transaction header - but then, when I do NACK on a message,
> it is still being consumed from the queue.
> I think I misunderstood the documentation.
> Can I NACK a message using Stomp protocol? If yes, what happens to the
> message (or “why it is being consumed from the queue”)?
>
>
> Thanks for the clarification,
>
> ER.
>
>
> Enviado do Email<https://go.microsoft.com/fwlink/?LinkId=550986> para
> Windows
>
>


Re: Artemis 2.20.0 + Stomp protocol: to Ack or to Nack, that's the question

Posted by Justin Bertram <jb...@apache.org>.
Yes, STOMP supports a NACK frame. The STOMP 1.2 specification [1] says this
about the NACK frame:

> NACK is the opposite of ACK. It is used to tell the server that the
client did not consume the message. The server can then either send the
message to a different client, discard it, or put it in a dead letter
queue. The exact behavior is server specific.

ActiveMQ Artemis discards the message.


Justin

[1] https://stomp.github.io/stomp-specification-1.2.html#NACK

On Thu, Mar 3, 2022 at 9:09 AM Edson Richter <ed...@hotmail.com>
wrote:

> I’m writing a Go client using Stomp protocol.
> I’ve read all the chapter about Stomp protocol in Artemis Docs. I
> understand I can’t use transactional Ack as per this paragraph:
>
>
> “The STOMP specification identifies transactional acknowledgements as an
> optional feature. Support for transactional acknowledgements is not
> implemented in Apache ActiveMQ Artemis. The ACK frame can not be part of a
> transaction. It will be ignored if its transaction header is set.”
>
>
> I’m not using transaction header - but then, when I do NACK on a message,
> it is still being consumed from the queue.
> I think I misunderstood the documentation.
> Can I NACK a message using Stomp protocol? If yes, what happens to the
> message (or “why it is being consumed from the queue”)?
>
>
> Thanks for the clarification,
>
> ER.
>
>
> Enviado do Email<https://go.microsoft.com/fwlink/?LinkId=550986> para
> Windows
>
>