[jira] [Updated] (ARTEMIS-4520) JMSContext.acknowledge() doesn't work if last message received is null

2023-11-30 Thread Justin Bertram (Jira)


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

Justin Bertram updated ARTEMIS-4520:

Description: 
I've stumbled into an issue with client acknowledge mode when using the JMS 
API. Here's an example:
{code:java}
try (var factory = new ActiveMQConnectionFactory("", "",
JMSContext.CLIENT_ACKNOWLEDGE)) {
var destination = ctx.createQueue("");
try (var consumer = ctx.createConsumer(destination)) {
var message1 = consumer.receive(10); // suppose
this call returns real message
var message2 = consumer.receive(10); // suppose
this call times out, so NULL is returned
ctx.acknowledge(); // I'm expecting that message1 gets
acknowledged here, but it's not happening

/*
Do something here
 */

}
}
}{code}
The reason for ack not working is that the implementation of 
{{JMSConsumer.receive}} stores the latest returned value in 
{{org.apache.activemq.artemis.jms.client.ActiveMQJMSContext}} for future usage 
in its {{acknowledge}} implementation. This happens regardless if the value is 
{{null}} or not. So in case the latest call to receive a message returns 
{{null}} then calling {{JMSContext.acknowledge()}} does nothing.

> JMSContext.acknowledge() doesn't work if last message received is null
> --
>
> Key: ARTEMIS-4520
> URL: https://issues.apache.org/jira/browse/ARTEMIS-4520
> Project: ActiveMQ Artemis
>  Issue Type: Bug
>Reporter: Justin Bertram
>Assignee: Justin Bertram
>Priority: Major
>
> I've stumbled into an issue with client acknowledge mode when using the JMS 
> API. Here's an example:
> {code:java}
> try (var factory = new ActiveMQConnectionFactory(" try (var ctx = factory.createContext("", "",
> JMSContext.CLIENT_ACKNOWLEDGE)) {
> var destination = ctx.createQueue("");
> try (var consumer = ctx.createConsumer(destination)) {
> var message1 = consumer.receive(10); // suppose
> this call returns real message
> var message2 = consumer.receive(10); // suppose
> this call times out, so NULL is returned
> ctx.acknowledge(); // I'm expecting that message1 gets
> acknowledged here, but it's not happening
> /*
> Do something here
>  */
> }
> }
> }{code}
> The reason for ack not working is that the implementation of 
> {{JMSConsumer.receive}} stores the latest returned value in 
> {{org.apache.activemq.artemis.jms.client.ActiveMQJMSContext}} for future 
> usage in its {{acknowledge}} implementation. This happens regardless if the 
> value is {{null}} or not. So in case the latest call to receive a message 
> returns {{null}} then calling {{JMSContext.acknowledge()}} does nothing.



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


[jira] [Updated] (ARTEMIS-4520) JMSContext.acknowledge() doesn't work if last message received is null

2023-11-30 Thread Justin Bertram (Jira)


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

Justin Bertram updated ARTEMIS-4520:

Description: 
I've stumbled into an issue with client acknowledge mode when using the JMS 
API. Here's an example:
{code:java}
try (var factory = new ActiveMQConnectionFactory("", "", 
JMSContext.CLIENT_ACKNOWLEDGE)) {
var destination = ctx.createQueue("");
try (var consumer = ctx.createConsumer(destination)) {
var message1 = consumer.receive(10); // suppose this 
call returns real message
var message2 = consumer.receive(10); // suppose this 
call times out, so NULL is returned
ctx.acknowledge(); // I'm expecting that message1 gets 
acknowledged here, but it's not happening

/*
Do something here...
 */

}
}
}{code}
The reason for ack not working is that the implementation of 
{{JMSConsumer.receive}} stores the latest returned value in 
{{org.apache.activemq.artemis.jms.client.ActiveMQJMSContext}} for future usage 
in its {{acknowledge}} implementation. This happens regardless if the value is 
{{null}} or not. So in case the latest call to receive a message returns 
{{null}} then calling {{JMSContext.acknowledge()}} does nothing.

  was:
I've stumbled into an issue with client acknowledge mode when using the JMS 
API. Here's an example:
{code:java}
try (var factory = new ActiveMQConnectionFactory("", "",
JMSContext.CLIENT_ACKNOWLEDGE)) {
var destination = ctx.createQueue("");
try (var consumer = ctx.createConsumer(destination)) {
var message1 = consumer.receive(10); // suppose
this call returns real message
var message2 = consumer.receive(10); // suppose
this call times out, so NULL is returned
ctx.acknowledge(); // I'm expecting that message1 gets
acknowledged here, but it's not happening

/*
Do something here
 */

}
}
}{code}
The reason for ack not working is that the implementation of 
{{JMSConsumer.receive}} stores the latest returned value in 
{{org.apache.activemq.artemis.jms.client.ActiveMQJMSContext}} for future usage 
in its {{acknowledge}} implementation. This happens regardless if the value is 
{{null}} or not. So in case the latest call to receive a message returns 
{{null}} then calling {{JMSContext.acknowledge()}} does nothing.


> JMSContext.acknowledge() doesn't work if last message received is null
> --
>
> Key: ARTEMIS-4520
> URL: https://issues.apache.org/jira/browse/ARTEMIS-4520
> Project: ActiveMQ Artemis
>  Issue Type: Bug
>Reporter: Justin Bertram
>Assignee: Justin Bertram
>Priority: Major
>
> I've stumbled into an issue with client acknowledge mode when using the JMS 
> API. Here's an example:
> {code:java}
> try (var factory = new ActiveMQConnectionFactory(" try (var ctx = factory.createContext("", "", 
> JMSContext.CLIENT_ACKNOWLEDGE)) {
> var destination = ctx.createQueue("");
> try (var consumer = ctx.createConsumer(destination)) {
> var message1 = consumer.receive(10); // suppose this 
> call returns real message
> var message2 = consumer.receive(10); // suppose this 
> call times out, so NULL is returned
> ctx.acknowledge(); // I'm expecting that message1 gets 
> acknowledged here, but it's not happening
> /*
> Do something here...
>  */
> }
> }
> }{code}
> The reason for ack not working is that the implementation of 
> {{JMSConsumer.receive}} stores the latest returned value in 
> {{org.apache.activemq.artemis.jms.client.ActiveMQJMSContext}} for future 
> usage in its {{acknowledge}} implementation. This happens regardless if the 
> value is {{null}} or not. So in case the latest call to receive a message 
> returns {{null}} then calling {{JMSContext.acknowledge()}} does nothing.



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


[jira] [Updated] (ARTEMIS-4520) JMSContext.acknowledge() doesn't work if last message received is null

2023-11-30 Thread Justin Bertram (Jira)


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

Justin Bertram updated ARTEMIS-4520:

External issue URL: 
https://lists.apache.org/thread/xtlb38rmh6o7t84k9mponl1jhpdyonfo

> JMSContext.acknowledge() doesn't work if last message received is null
> --
>
> Key: ARTEMIS-4520
> URL: https://issues.apache.org/jira/browse/ARTEMIS-4520
> Project: ActiveMQ Artemis
>  Issue Type: Bug
>Reporter: Justin Bertram
>Assignee: Justin Bertram
>Priority: Major
>




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