You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Matthew Karlsen <MK...@idbs.com> on 2016/05/03 14:47:31 UTC

[Artemis, Qpid JMS] Sending persistent message to Artemis blocks while transformer runs?

Hello All,

I have a Qpid JMS messaging client sending a persistent message to
Artemis. I am finding that the send() method is blocking until the
transformer I have configured in Artemis completes (which takes
several seconds).

Can I confirm that this is intended behaviour? i.e. if a client
sends a persistent message it only gets acknowledged as sent
once the transformer completes...

Are there any work-arounds whilst ensuring that the
messages are stored in event of Artemis shutdown?

Thank you & regards,
Matthew

RE: [Artemis, Qpid JMS] Sending persistent message to Artemis blocks while transformer runs?

Posted by Matthew Karlsen <MK...@idbs.com>.
Thank you for the suggestion -- I'll look in to the approach recommended.

Regards,
--Matthew

-----Original Message-----
From: Justin Bertram [mailto:jbertram@apache.com] 
Sent: 03 May 2016 15:12
To: users@activemq.apache.org
Subject: Re: [Artemis, Qpid JMS] Sending persistent message to Artemis blocks while transformer runs?

> That leaves the option of an out-of-band transformer, it would seem?

That would be my recommendation.  Have a local consumer which receives the message and makes the necessary REST call(s) back to A and then finally sends the message where it needs to go.


Justin

----- Original Message -----
From: "Matthew Karlsen" <MK...@idbs.com>
To: users@activemq.apache.org
Sent: Tuesday, May 3, 2016 8:57:41 AM
Subject: RE: [Artemis, Qpid JMS] Sending persistent message to Artemis blocks while transformer runs?

Hello Justin,

Thank you very much for the response.

We have messages being sent from A. These messages need to be small to avoid slowing down A. However, B and C require more information than is contained within the initial message sent by A. We therefore have two transformers that augment the initial message with further information. These transformers make rest calls back to A, in sequence, to augment the messages with the required information for B and C. This also prevents B and C having to make rest calls back to A with the associated security implications.

Unfortunately non-durable messages are not an option. Speeding up the transformation logic may work but the speed increase is unlikely to be sufficient. That leaves the option of an out-of-band transformer, it would seem?

Thank you & regards,
Matthew



-----Original Message-----
From: Justin Bertram [mailto:jbertram@apache.com] 
Sent: 03 May 2016 14:21
To: users@activemq.apache.org
Subject: Re: [Artemis, Qpid JMS] Sending persistent message to Artemis blocks while transformer runs?

A durable message won't be acknowledged by the broker until it is written to disk.  The transformation is almost certainly being done before the message is written to disk so the sender ostensibly must wait for the transformation to complete before it receives the ack from the broker.

Potential workarounds:

  1) Speed up the transformation logic.
  2) Send non-durable messages.
  3) Use an out-of-band transformer so that the message is written to disk before the transformation occurs.

Can you elaborate on how you've configured your transformer?


Justin

----- Original Message -----
From: "Matthew Karlsen" <MK...@idbs.com>
To: users@activemq.apache.org
Sent: Tuesday, May 3, 2016 7:47:31 AM
Subject: [Artemis, Qpid JMS] Sending persistent message to Artemis blocks while transformer runs?

Hello All,

I have a Qpid JMS messaging client sending a persistent message to Artemis. I am finding that the send() method is blocking until the transformer I have configured in Artemis completes (which takes several seconds).

Can I confirm that this is intended behaviour? i.e. if a client sends a persistent message it only gets acknowledged as sent once the transformer completes...

Are there any work-arounds whilst ensuring that the messages are stored in event of Artemis shutdown?

Thank you & regards,
Matthew

Re: [Artemis, Qpid JMS] Sending persistent message to Artemis blocks while transformer runs?

Posted by Justin Bertram <jb...@apache.com>.
> That leaves the option of an out-of-band transformer, it would seem?

That would be my recommendation.  Have a local consumer which receives the message and makes the necessary REST call(s) back to A and then finally sends the message where it needs to go.


Justin

----- Original Message -----
From: "Matthew Karlsen" <MK...@idbs.com>
To: users@activemq.apache.org
Sent: Tuesday, May 3, 2016 8:57:41 AM
Subject: RE: [Artemis, Qpid JMS] Sending persistent message to Artemis blocks while transformer runs?

Hello Justin,

Thank you very much for the response.

We have messages being sent from A. These messages need to be small to avoid slowing down A. However, B and C require more information than is contained within the initial message sent by A. We therefore have two transformers that augment the initial message with further information. These transformers make rest calls back to A, in sequence, to augment the messages with the required information for B and C. This also prevents B and C having to make rest calls back to A with the associated security implications.

Unfortunately non-durable messages are not an option. Speeding up the transformation logic may work but the speed increase is unlikely to be sufficient. That leaves the option of an out-of-band transformer, it would seem?

Thank you & regards,
Matthew



-----Original Message-----
From: Justin Bertram [mailto:jbertram@apache.com] 
Sent: 03 May 2016 14:21
To: users@activemq.apache.org
Subject: Re: [Artemis, Qpid JMS] Sending persistent message to Artemis blocks while transformer runs?

A durable message won't be acknowledged by the broker until it is written to disk.  The transformation is almost certainly being done before the message is written to disk so the sender ostensibly must wait for the transformation to complete before it receives the ack from the broker.

Potential workarounds:

  1) Speed up the transformation logic.
  2) Send non-durable messages.
  3) Use an out-of-band transformer so that the message is written to disk before the transformation occurs.

Can you elaborate on how you've configured your transformer?


Justin

----- Original Message -----
From: "Matthew Karlsen" <MK...@idbs.com>
To: users@activemq.apache.org
Sent: Tuesday, May 3, 2016 7:47:31 AM
Subject: [Artemis, Qpid JMS] Sending persistent message to Artemis blocks while transformer runs?

Hello All,

I have a Qpid JMS messaging client sending a persistent message to Artemis. I am finding that the send() method is blocking until the transformer I have configured in Artemis completes (which takes several seconds).

Can I confirm that this is intended behaviour? i.e. if a client sends a persistent message it only gets acknowledged as sent once the transformer completes...

Are there any work-arounds whilst ensuring that the messages are stored in event of Artemis shutdown?

Thank you & regards,
Matthew

RE: [Artemis, Qpid JMS] Sending persistent message to Artemis blocks while transformer runs?

Posted by Matthew Karlsen <MK...@idbs.com>.
Hello Justin,

Thank you very much for the response.

We have messages being sent from A. These messages need to be small to avoid slowing down A. However, B and C require more information than is contained within the initial message sent by A. We therefore have two transformers that augment the initial message with further information. These transformers make rest calls back to A, in sequence, to augment the messages with the required information for B and C. This also prevents B and C having to make rest calls back to A with the associated security implications.

Unfortunately non-durable messages are not an option. Speeding up the transformation logic may work but the speed increase is unlikely to be sufficient. That leaves the option of an out-of-band transformer, it would seem?

Thank you & regards,
Matthew



-----Original Message-----
From: Justin Bertram [mailto:jbertram@apache.com] 
Sent: 03 May 2016 14:21
To: users@activemq.apache.org
Subject: Re: [Artemis, Qpid JMS] Sending persistent message to Artemis blocks while transformer runs?

A durable message won't be acknowledged by the broker until it is written to disk.  The transformation is almost certainly being done before the message is written to disk so the sender ostensibly must wait for the transformation to complete before it receives the ack from the broker.

Potential workarounds:

  1) Speed up the transformation logic.
  2) Send non-durable messages.
  3) Use an out-of-band transformer so that the message is written to disk before the transformation occurs.

Can you elaborate on how you've configured your transformer?


Justin

----- Original Message -----
From: "Matthew Karlsen" <MK...@idbs.com>
To: users@activemq.apache.org
Sent: Tuesday, May 3, 2016 7:47:31 AM
Subject: [Artemis, Qpid JMS] Sending persistent message to Artemis blocks while transformer runs?

Hello All,

I have a Qpid JMS messaging client sending a persistent message to Artemis. I am finding that the send() method is blocking until the transformer I have configured in Artemis completes (which takes several seconds).

Can I confirm that this is intended behaviour? i.e. if a client sends a persistent message it only gets acknowledged as sent once the transformer completes...

Are there any work-arounds whilst ensuring that the messages are stored in event of Artemis shutdown?

Thank you & regards,
Matthew

Re: [Artemis, Qpid JMS] Sending persistent message to Artemis blocks while transformer runs?

Posted by Justin Bertram <jb...@apache.com>.
A durable message won't be acknowledged by the broker until it is written to disk.  The transformation is almost certainly being done before the message is written to disk so the sender ostensibly must wait for the transformation to complete before it receives the ack from the broker.

Potential workarounds:

  1) Speed up the transformation logic.
  2) Send non-durable messages.
  3) Use an out-of-band transformer so that the message is written to disk before the transformation occurs.

Can you elaborate on how you've configured your transformer?


Justin

----- Original Message -----
From: "Matthew Karlsen" <MK...@idbs.com>
To: users@activemq.apache.org
Sent: Tuesday, May 3, 2016 7:47:31 AM
Subject: [Artemis, Qpid JMS] Sending persistent message to Artemis blocks while transformer runs?

Hello All,

I have a Qpid JMS messaging client sending a persistent message to
Artemis. I am finding that the send() method is blocking until the
transformer I have configured in Artemis completes (which takes
several seconds).

Can I confirm that this is intended behaviour? i.e. if a client
sends a persistent message it only gets acknowledged as sent
once the transformer completes...

Are there any work-arounds whilst ensuring that the
messages are stored in event of Artemis shutdown?

Thank you & regards,
Matthew