You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "John Silva (JIRA)" <ji...@apache.org> on 2008/05/02 01:39:43 UTC

[jira] Issue Comment Edited: (AMQ-895) JMS to JMS Bridge never reconnects under remote broker restarts.

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

jsilva edited comment on AMQ-895 at 5/1/08 4:39 PM:
--------------------------------------------------------

the attached patch has a slight error

while (maximumRetries > 0 && attempt >= maximumRetries);

should be

while (maximumRetries > 0 && attempt <= maximumRetries);

correct?  

Even with this change, you can see the number of retries increment, but the producer does not begin sending.  I have also tried the patch in the comments of AMQ-1220 and this actually does reconnect the bridge (no more connection failures) but the producer fails to send the messages which are enqueued during the time the foreign connection is down.  

The exception in 4.1.1 is:

javax.jms.IllegalStateException: The producer is closed
        at org.apache.activemq.ActiveMQMessageProducer.checkClosed(ActiveMQMessa
geProducer.java:333)
        at org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProdu
cer.java:445)
        at org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProdu
cer.java:415)
        at org.apache.activemq.ActiveMQQueueSender.send(ActiveMQQueueSender.java
:116)
        at org.apache.activemq.network.jms.QueueBridge.sendMessage(QueueBridge.j
ava:87)
        at org.apache.activemq.network.jms.DestinationBridge.onMessage(Destinati
onBridge.java:134)
        at org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageC
onsumer.java:854)
        at org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionE
xecutor.java:99)
        at org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionEx
ecutor.java:166)
        at org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskR
unner.java:101)
        at org.apache.activemq.thread.DedicatedTaskRunner.access$000(DedicatedTa
skRunner.java:25)
        at org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRun
ner.java:39)

      was (Author: jsilva):
    the attached patch has a slight error

while (maximumRetries > 0 && attempt >= maximumRetries);

should be

while (maximumRetries > 0 && attempt <= maximumRetries);

correct?  

Even with this change, you can see the number of retries increment, but the producer does not begin sending.  I have also tried the patch in the comments of AMQ-1220 and this actually does reconnect the bridge (no more connection failures) but the producer fails to send the messages which are enqueued during the time the foreign connection is down.  
  
> JMS to JMS Bridge never reconnects under remote broker restarts.
> ----------------------------------------------------------------
>
>                 Key: AMQ-895
>                 URL: https://issues.apache.org/activemq/browse/AMQ-895
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 4.0 RC2, 4.0.1
>            Reporter: Manuel Teira
>             Fix For: 5.2.0
>
>         Attachments: test_patch.diff
>
>
> I'm using ActiveMQ (4.0.1) JMS to JMS Bridge functionality to connect to a  SunMQ JMS Broker (3.6 SP3  (Build 02-A)). I'm using two queues, an input and an output one, with the following configuration:
>     <jmsBridgeConnectors>
>       <jmsQueueConnector outboundQueueConnectionFactory="#REMOTE">
>       <outboundQueueBridges>
>         <outboundQueueBridge outboundQueueName="SUNRECV"/>
>       </outboundQueueBridges>
>       <inboundQueueBridges>
>         <inboundQueueBridge inboundQueueName="SUNSEND"/>
>       </inboundQueueBridges>
>       </jmsQueueConnector>
>     </jmsBridgeConnectors>
> The system works really well until the SunMQ broker needed to be restarted. This is what I found:
> 1.-ActiveMQ is not aware of the remote broker shutdown. I waited for a while, but no log on ActiveMQ indicates knowledge about the new situation.
> 2.-When I send a message to the output queue SUNRECV, ActiveMQ complains that the producer is closed:
> [ERROR][2006/08/25.09:47:12.039][ActiveMQ Session Task]failed to forward message: ActiveMQTextMessage {commandId = 5, responseRequired = false, messageId = ID:trabucco-43457-1156491843149-3:4:1:1:1, originalDestination = null, originalTransactionId = null, producerId = ID:trabucco-43457-1156491843149-3:4:1:1, destination = queue://SUNRECV, transactionId = null, expiration = 0, timestamp = 1156492032027, arrival = 0, correlationId = null, replyTo = null, persistent = false, type = null, priority = 0, groupID = null, groupSequence = 0, targetConsumerId = null, compressed = false, userID = null, content = null, marshalledProperties = null, dataStructure = null, redeliveryCounter = 0, size = 2, properties = null, readOnlyProperties = true, readOnlyBody = true, text = 1}([C4064]: Cannot perform operation, producer is closed.)
>  After this, it is automatically queueing messages without sending them, showing the log:
> [DEBUG][2006/08/25.09:47:42.721][RMI TCP Connection(4)-10.95.89.20]No subscriptions registered, will not dispatch message at this time.
>  Even if SunMQ is started again, ActiveMQ is not detecting the new situation, and continues queueing messages sent to SUNRECV.
> Please, make me know if more information is needed to understand the situation.

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