You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "Christian Schneider (JIRA)" <ji...@apache.org> on 2010/10/04 08:24:40 UTC

[jira] Created: (CAMEL-3193) After a longer connection loss to the jms server a jms endpoint does not work anymore even if the jms server comes back online

After a longer connection loss to the jms server a jms endpoint does not work anymore even if the jms server comes back online
------------------------------------------------------------------------------------------------------------------------------

                 Key: CAMEL-3193
                 URL: https://issues.apache.org/activemq/browse/CAMEL-3193
             Project: Apache Camel
          Issue Type: Bug
          Components: camel-jms
    Affects Versions: 2.5.0
            Reporter: Christian Schneider
            Assignee: Christian Schneider
             Fix For: 2.5.0


To recreate the problem you need a route with a jms inout endpoint that is configured to use a temporary destination for replies. Till now I was only able to show the problem with tibco ems.

- Start broker
- Start the jms consumer that replies to the request
- Start the route 
- Send a request/reoply exchange (should work)
- Stop the broker
- Wait long enough for the client to do a full reconnect (I used connectionFactory.setReconnAttemptCount(1) on the client so I do not have to wait so long)
- Start the broker -> The jms component will do a full new connect
- Send a request/reoply exchange -> Now a InvalidDestination Exception happens

The client route will not work anymore until a restart as it creates the temporary destination only once and it is invalid now.



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CAMEL-3193) request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore

Posted by "Christian Schneider (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=62344#action_62344 ] 

Christian Schneider commented on CAMEL-3193:
--------------------------------------------

I tested your patch yesterday and found we can solve this even much easier. The current code of TemporaryQueueReplyManager uses SimpleMessageListenerContainer. I just needed to switch to the DefaultMessageListenerContainer to achieve the same effect. I noticed this when I merged your patch with mine and tried to recreate the error. The problem did  not occur anymore even when I switched off your exceptionListener. 

So I looked into DefaultMessageListenerContainer and found that they support reconnections. They even do a fresh resolve of the temporary queue so it is recreated automatically. So I propose we simply go this way.

I just committed this change. Feel free to roll back if you see any problem with this aproach for the 2.5.0 release. I also committed the test but disabled it as it does not run unattended.

> request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore
> ------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-3193
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-3193
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 2.4.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.5.0
>
>         Attachments: CAMEL-3193.patch, ClientTest.java, patch.txt
>
>
> To recreate the problem you need a route with a jms inout endpoint that is configured to use a temporary destination for replies. Till now I was only able to show the problem with tibco ems.
> - Start broker
> - Start the jms consumer that replies to the request
> - Start the route 
> - Send a request/reoply exchange (should work)
> - Stop the broker
> - Wait long enough for the client to do a full reconnect (I used connectionFactory.setReconnAttemptCount(1) on the client so I do not have to wait so long)
> - Start the broker -> The jms component will do a full new connect
> - Send a request/reoply exchange -> Now a InvalidDestination Exception happens
> The client route will not work anymore until a restart as it creates the temporary destination only once and it is invalid now.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CAMEL-3193) request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore

Posted by "Claus Ibsen (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=62349#action_62349 ] 

Claus Ibsen commented on CAMEL-3193:
------------------------------------

Ah that is perfect. Why didn't we consider this before, its after all the spring DMLC that is used to consume the reply messages from the temporary queue.



> request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore
> ------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-3193
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-3193
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 2.4.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.5.0
>
>         Attachments: CAMEL-3193.patch, ClientTest.java, patch.txt
>
>
> To recreate the problem you need a route with a jms inout endpoint that is configured to use a temporary destination for replies. Till now I was only able to show the problem with tibco ems.
> - Start broker
> - Start the jms consumer that replies to the request
> - Start the route 
> - Send a request/reoply exchange (should work)
> - Stop the broker
> - Wait long enough for the client to do a full reconnect (I used connectionFactory.setReconnAttemptCount(1) on the client so I do not have to wait so long)
> - Start the broker -> The jms component will do a full new connect
> - Send a request/reoply exchange -> Now a InvalidDestination Exception happens
> The client route will not work anymore until a restart as it creates the temporary destination only once and it is invalid now.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CAMEL-3193) request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore

Posted by "Claus Ibsen (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=62321#action_62321 ] 

Claus Ibsen commented on CAMEL-3193:
------------------------------------

The AMQ people use a SocketProxy when testing various network issues.

For example:
https://fisheye6.atlassian.com/browse/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/SoWriteTimeoutTest.java?r=HEAD

> request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore
> ------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-3193
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-3193
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 2.4.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.5.0
>
>         Attachments: CAMEL-3193.patch, ClientTest.java, patch.txt
>
>
> To recreate the problem you need a route with a jms inout endpoint that is configured to use a temporary destination for replies. Till now I was only able to show the problem with tibco ems.
> - Start broker
> - Start the jms consumer that replies to the request
> - Start the route 
> - Send a request/reoply exchange (should work)
> - Stop the broker
> - Wait long enough for the client to do a full reconnect (I used connectionFactory.setReconnAttemptCount(1) on the client so I do not have to wait so long)
> - Start the broker -> The jms component will do a full new connect
> - Send a request/reoply exchange -> Now a InvalidDestination Exception happens
> The client route will not work anymore until a restart as it creates the temporary destination only once and it is invalid now.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CAMEL-3193) After a longer connection loss to the jms server a jms endpoint does not work anymore even if the jms server comes back online

Posted by "Christian Schneider (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/CAMEL-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Christian Schneider updated CAMEL-3193:
---------------------------------------

    Attachment: patch.txt

Adding a patch that contains a unit test for the problem. Unfortunately the test is not yet working unattended. I was only able to recreate the problem in Tibco EMS. As the EMS server is external it has to be stopped / started by hand.

So my first goal is to recreate the problem in ActiveMQ and make the test run fully unattended.

 Any ideas how to achieve this?


> After a longer connection loss to the jms server a jms endpoint does not work anymore even if the jms server comes back online
> ------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-3193
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-3193
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 2.5.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.5.0
>
>         Attachments: patch.txt
>
>
> To recreate the problem you need a route with a jms inout endpoint that is configured to use a temporary destination for replies. Till now I was only able to show the problem with tibco ems.
> - Start broker
> - Start the jms consumer that replies to the request
> - Start the route 
> - Send a request/reoply exchange (should work)
> - Stop the broker
> - Wait long enough for the client to do a full reconnect (I used connectionFactory.setReconnAttemptCount(1) on the client so I do not have to wait so long)
> - Start the broker -> The jms component will do a full new connect
> - Send a request/reoply exchange -> Now a InvalidDestination Exception happens
> The client route will not work anymore until a restart as it creates the temporary destination only once and it is invalid now.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CAMEL-3193) After a longer connection loss to the jms server a jms endpoint does not work anymore even if the jms server comes back online

Posted by "Claus Ibsen (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=62307#action_62307 ] 

Claus Ibsen commented on CAMEL-3193:
------------------------------------

Maybe you can used a fixed reply to queue instead? Just to see if that works for you with re-connection/failover. Then you have a workaround/solution. 


> After a longer connection loss to the jms server a jms endpoint does not work anymore even if the jms server comes back online
> ------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-3193
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-3193
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 2.5.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.5.0
>
>         Attachments: ClientTest.java, patch.txt
>
>
> To recreate the problem you need a route with a jms inout endpoint that is configured to use a temporary destination for replies. Till now I was only able to show the problem with tibco ems.
> - Start broker
> - Start the jms consumer that replies to the request
> - Start the route 
> - Send a request/reoply exchange (should work)
> - Stop the broker
> - Wait long enough for the client to do a full reconnect (I used connectionFactory.setReconnAttemptCount(1) on the client so I do not have to wait so long)
> - Start the broker -> The jms component will do a full new connect
> - Send a request/reoply exchange -> Now a InvalidDestination Exception happens
> The client route will not work anymore until a restart as it creates the temporary destination only once and it is invalid now.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CAMEL-3193) request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore

Posted by "Christian Schneider (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=62320#action_62320 ] 

Christian Schneider commented on CAMEL-3193:
--------------------------------------------

Hi Claus,

did the ActiveMQ folks have any idea how to reproduce the problem in ActiveMQ. I tried to shutdown the broker and restart it but the Temporary queue was still valid. So it almost seems the temp queue outlives a connection in ActiveMQ. It would be great to have a automatic test for this problem to test the fix and document the issue in code. 

Thanks 

Christian


> request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore
> ------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-3193
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-3193
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 2.4.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.5.0
>
>         Attachments: CAMEL-3193.patch, ClientTest.java, patch.txt
>
>
> To recreate the problem you need a route with a jms inout endpoint that is configured to use a temporary destination for replies. Till now I was only able to show the problem with tibco ems.
> - Start broker
> - Start the jms consumer that replies to the request
> - Start the route 
> - Send a request/reoply exchange (should work)
> - Stop the broker
> - Wait long enough for the client to do a full reconnect (I used connectionFactory.setReconnAttemptCount(1) on the client so I do not have to wait so long)
> - Start the broker -> The jms component will do a full new connect
> - Send a request/reoply exchange -> Now a InvalidDestination Exception happens
> The client route will not work anymore until a restart as it creates the temporary destination only once and it is invalid now.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (CAMEL-3193) request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore

Posted by "Christian Schneider (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/CAMEL-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Christian Schneider resolved CAMEL-3193.
----------------------------------------

    Resolution: Fixed

> request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore
> ------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-3193
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-3193
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 2.4.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.5.0
>
>         Attachments: CAMEL-3193.patch, ClientTest.java, patch.txt
>
>
> To recreate the problem you need a route with a jms inout endpoint that is configured to use a temporary destination for replies. Till now I was only able to show the problem with tibco ems.
> - Start broker
> - Start the jms consumer that replies to the request
> - Start the route 
> - Send a request/reoply exchange (should work)
> - Stop the broker
> - Wait long enough for the client to do a full reconnect (I used connectionFactory.setReconnAttemptCount(1) on the client so I do not have to wait so long)
> - Start the broker -> The jms component will do a full new connect
> - Send a request/reoply exchange -> Now a InvalidDestination Exception happens
> The client route will not work anymore until a restart as it creates the temporary destination only once and it is invalid now.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CAMEL-3193) After a longer connection loss to the jms server a jms endpoint does not work anymore even if the jms server comes back online

Posted by "Christian Schneider (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=62308#action_62308 ] 

Christian Schneider commented on CAMEL-3193:
--------------------------------------------

A fixed reply queue will work but has more adminsitrative overhead. I also never have used fixed reply queues with more than one consumer on them but I guess camel will handle this case.

I will try to work out a patch in any case. If we do not get it into the 2.5.0 then I can still create a small branch for EnBW that contains the fix. But I only do these things as soon as a fix is in trunk so I am sure the next release will contain it. 

Thanks for the fast reply. Btw. What is your estimation for the 2.5.0 release date?


> After a longer connection loss to the jms server a jms endpoint does not work anymore even if the jms server comes back online
> ------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-3193
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-3193
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 2.5.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.5.0
>
>         Attachments: ClientTest.java, patch.txt
>
>
> To recreate the problem you need a route with a jms inout endpoint that is configured to use a temporary destination for replies. Till now I was only able to show the problem with tibco ems.
> - Start broker
> - Start the jms consumer that replies to the request
> - Start the route 
> - Send a request/reoply exchange (should work)
> - Stop the broker
> - Wait long enough for the client to do a full reconnect (I used connectionFactory.setReconnAttemptCount(1) on the client so I do not have to wait so long)
> - Start the broker -> The jms component will do a full new connect
> - Send a request/reoply exchange -> Now a InvalidDestination Exception happens
> The client route will not work anymore until a restart as it creates the temporary destination only once and it is invalid now.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CAMEL-3193) After a longer connection loss to the jms server a jms endpoint does not work anymore even if the jms server comes back online

Posted by "Claus Ibsen (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=62315#action_62315 ] 

Claus Ibsen commented on CAMEL-3193:
------------------------------------

Had a chat with the AMQ people. Temporary queues is only associated with a jms connection. So when that connection dies the pending messages on the temporary queue as well.

The best option is to use real queues if you want to be absolute sure that a reply message is not lost.

Anyway I think your idea of using an exception listener and then catch the invalid destination and then restart the listener is a good idea.


> After a longer connection loss to the jms server a jms endpoint does not work anymore even if the jms server comes back online
> ------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-3193
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-3193
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 2.5.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.5.0
>
>         Attachments: ClientTest.java, patch.txt
>
>
> To recreate the problem you need a route with a jms inout endpoint that is configured to use a temporary destination for replies. Till now I was only able to show the problem with tibco ems.
> - Start broker
> - Start the jms consumer that replies to the request
> - Start the route 
> - Send a request/reoply exchange (should work)
> - Stop the broker
> - Wait long enough for the client to do a full reconnect (I used connectionFactory.setReconnAttemptCount(1) on the client so I do not have to wait so long)
> - Start the broker -> The jms component will do a full new connect
> - Send a request/reoply exchange -> Now a InvalidDestination Exception happens
> The client route will not work anymore until a restart as it creates the temporary destination only once and it is invalid now.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CAMEL-3193) After a longer connection loss to the jms server a jms endpoint does not work anymore even if the jms server comes back online

Posted by "Christian Schneider (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/CAMEL-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Christian Schneider updated CAMEL-3193:
---------------------------------------

    Attachment: ClientTest.java

Adding a small sample client with pure spring jms (without camel) that shows an attempt how we can fix the problem. 
The idea is to use setExceptionListener for the MessageListenerComntainer. It catches the InvalidDestinationException and then 
recreates the temp queue and the Listener. I think we will need something similar in camel.

listener.setExceptionListener(new ExceptionListener() {

            @Override
            public void onException(JMSException exception) {
                exception.printStackTrace();
                if (exception instanceof InvalidDestinationException) {
                    listener.stop();
                    setupListener(connectionFactory, jmsTemplate);
                }
            }

        });

After looking into the code of camel jms I think the right place is in the TemporaryQueueReplyManager. I will attach a patch shortly.

> After a longer connection loss to the jms server a jms endpoint does not work anymore even if the jms server comes back online
> ------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-3193
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-3193
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 2.5.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.5.0
>
>         Attachments: ClientTest.java, patch.txt
>
>
> To recreate the problem you need a route with a jms inout endpoint that is configured to use a temporary destination for replies. Till now I was only able to show the problem with tibco ems.
> - Start broker
> - Start the jms consumer that replies to the request
> - Start the route 
> - Send a request/reoply exchange (should work)
> - Stop the broker
> - Wait long enough for the client to do a full reconnect (I used connectionFactory.setReconnAttemptCount(1) on the client so I do not have to wait so long)
> - Start the broker -> The jms component will do a full new connect
> - Send a request/reoply exchange -> Now a InvalidDestination Exception happens
> The client route will not work anymore until a restart as it creates the temporary destination only once and it is invalid now.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CAMEL-3193) request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore

Posted by "Christian Schneider (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=62319#action_62319 ] 

Christian Schneider commented on CAMEL-3193:
--------------------------------------------

Hi Claus,

I have to wait till I am at home to be able to test the patch. From what I tested in the morning I think you will also need to do "setReplyTo(null)" to let camel forget the old destination.

Thanks for the quick help

Christian


> request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore
> ------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-3193
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-3193
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 2.4.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.5.0
>
>         Attachments: CAMEL-3193.patch, ClientTest.java, patch.txt
>
>
> To recreate the problem you need a route with a jms inout endpoint that is configured to use a temporary destination for replies. Till now I was only able to show the problem with tibco ems.
> - Start broker
> - Start the jms consumer that replies to the request
> - Start the route 
> - Send a request/reoply exchange (should work)
> - Stop the broker
> - Wait long enough for the client to do a full reconnect (I used connectionFactory.setReconnAttemptCount(1) on the client so I do not have to wait so long)
> - Start the broker -> The jms component will do a full new connect
> - Send a request/reoply exchange -> Now a InvalidDestination Exception happens
> The client route will not work anymore until a restart as it creates the temporary destination only once and it is invalid now.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Closed: (CAMEL-3193) request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore

Posted by "Christian Schneider (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/CAMEL-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Christian Schneider closed CAMEL-3193.
--------------------------------------


> request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore
> ------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-3193
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-3193
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 2.4.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.5.0
>
>         Attachments: CAMEL-3193.patch, ClientTest.java, patch.txt
>
>
> To recreate the problem you need a route with a jms inout endpoint that is configured to use a temporary destination for replies. Till now I was only able to show the problem with tibco ems.
> - Start broker
> - Start the jms consumer that replies to the request
> - Start the route 
> - Send a request/reoply exchange (should work)
> - Stop the broker
> - Wait long enough for the client to do a full reconnect (I used connectionFactory.setReconnAttemptCount(1) on the client so I do not have to wait so long)
> - Start the broker -> The jms component will do a full new connect
> - Send a request/reoply exchange -> Now a InvalidDestination Exception happens
> The client route will not work anymore until a restart as it creates the temporary destination only once and it is invalid now.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CAMEL-3193) After a longer connection loss to the jms server a jms endpoint does not work anymore even if the jms server comes back online

Posted by "Claus Ibsen (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=62310#action_62310 ] 

Claus Ibsen commented on CAMEL-3193:
------------------------------------

Yeah fixed queues on brokers which may not be able to automatic create the queues on demand often causes admin overhead :)

I can see one issue if a patch will create a new temporary queue, if there was an exception using the old one. 
In that cause I think you could lose messages which are in-flight (eg replies are expected on the old temporary queue)

However it would fix the issue of new messages as they just use the newly created temporary queue and it ought to just work.
But I bet this is better than _nothing_.

I will try to touch base with some AMQ committers and hear their point of view.

We are talking about Camel 2.5 on the dev forum. We are waiting for scalate 1.3 to be released. But with good luck we may be able to start the release this week or start of next.

> After a longer connection loss to the jms server a jms endpoint does not work anymore even if the jms server comes back online
> ------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-3193
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-3193
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 2.5.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.5.0
>
>         Attachments: ClientTest.java, patch.txt
>
>
> To recreate the problem you need a route with a jms inout endpoint that is configured to use a temporary destination for replies. Till now I was only able to show the problem with tibco ems.
> - Start broker
> - Start the jms consumer that replies to the request
> - Start the route 
> - Send a request/reoply exchange (should work)
> - Stop the broker
> - Wait long enough for the client to do a full reconnect (I used connectionFactory.setReconnAttemptCount(1) on the client so I do not have to wait so long)
> - Start the broker -> The jms component will do a full new connect
> - Send a request/reoply exchange -> Now a InvalidDestination Exception happens
> The client route will not work anymore until a restart as it creates the temporary destination only once and it is invalid now.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CAMEL-3193) request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore

Posted by "Claus Ibsen (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/CAMEL-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Claus Ibsen updated CAMEL-3193:
-------------------------------

    Attachment: CAMEL-3193.patch

Christian it is maybe something like this patch you need to resolve your problem?

Maybe you can take a look at it and try it out on your system.

> request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore
> ------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-3193
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-3193
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 2.4.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.5.0
>
>         Attachments: CAMEL-3193.patch, ClientTest.java, patch.txt
>
>
> To recreate the problem you need a route with a jms inout endpoint that is configured to use a temporary destination for replies. Till now I was only able to show the problem with tibco ems.
> - Start broker
> - Start the jms consumer that replies to the request
> - Start the route 
> - Send a request/reoply exchange (should work)
> - Stop the broker
> - Wait long enough for the client to do a full reconnect (I used connectionFactory.setReconnAttemptCount(1) on the client so I do not have to wait so long)
> - Start the broker -> The jms component will do a full new connect
> - Send a request/reoply exchange -> Now a InvalidDestination Exception happens
> The client route will not work anymore until a restart as it creates the temporary destination only once and it is invalid now.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CAMEL-3193) After a longer connection loss to the jms server a jms endpoint does not work anymore even if the jms server comes back online

Posted by "Claus Ibsen (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=62305#action_62305 ] 

Claus Ibsen commented on CAMEL-3193:
------------------------------------

Chrsitian the title of this ticket is misleading. Could you change it.

Its a problem with failover/re-connection on some brokers such as Tibco EMS which doesn't automatic failover temporary queues.
It ought to be the brokers problem to ensure this works out of the box.

What happens when the _other_ side returns back a reply on that _old_ temporary queue? You can't just create a new temporary queue on re-connection/failover.
Hence I think its more a broker problem than the camel-jms component.

> After a longer connection loss to the jms server a jms endpoint does not work anymore even if the jms server comes back online
> ------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-3193
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-3193
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 2.5.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.5.0
>
>         Attachments: patch.txt
>
>
> To recreate the problem you need a route with a jms inout endpoint that is configured to use a temporary destination for replies. Till now I was only able to show the problem with tibco ems.
> - Start broker
> - Start the jms consumer that replies to the request
> - Start the route 
> - Send a request/reoply exchange (should work)
> - Stop the broker
> - Wait long enough for the client to do a full reconnect (I used connectionFactory.setReconnAttemptCount(1) on the client so I do not have to wait so long)
> - Start the broker -> The jms component will do a full new connect
> - Send a request/reoply exchange -> Now a InvalidDestination Exception happens
> The client route will not work anymore until a restart as it creates the temporary destination only once and it is invalid now.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CAMEL-3193) request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore

Posted by "Claus Ibsen (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/CAMEL-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Claus Ibsen updated CAMEL-3193:
-------------------------------

              Summary: request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore  (was: After a longer connection loss to the jms server a jms endpoint does not work anymore even if the jms server comes back online)
    Affects Version/s: 2.4.0
                           (was: 2.5.0)

> request/reply over JMS using temporary queues - if connection lost the temporary queue is not re-created which causes the producer to not work anymore
> ------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-3193
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-3193
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 2.4.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.5.0
>
>         Attachments: ClientTest.java, patch.txt
>
>
> To recreate the problem you need a route with a jms inout endpoint that is configured to use a temporary destination for replies. Till now I was only able to show the problem with tibco ems.
> - Start broker
> - Start the jms consumer that replies to the request
> - Start the route 
> - Send a request/reoply exchange (should work)
> - Stop the broker
> - Wait long enough for the client to do a full reconnect (I used connectionFactory.setReconnAttemptCount(1) on the client so I do not have to wait so long)
> - Start the broker -> The jms component will do a full new connect
> - Send a request/reoply exchange -> Now a InvalidDestination Exception happens
> The client route will not work anymore until a restart as it creates the temporary destination only once and it is invalid now.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.