activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Strachan" <james.strac...@gmail.com>
Subject Re: Connection lost in JMS to JMS Bridge scenario.
Date Fri, 25 Aug 2006 08:24:53 GMT
On 8/25/06, Manuel Teira <mteira@tid.es> wrote:
>
>  Hello and sorry for the previous message, it seems I pressed the wrong
> button.
>
>
>  I'm using ActiveMQ 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>
>
>  under ActiveMQ 4.0.1
>
>  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.
>
>  3.-Once I restart ActiveMQ broker (with SunMQ previously restarted) two
> things can happen:
>    a.-ActiveMQ sends the previously queued messages to SunMQ. I can find
> SUNRECV queue in the 'queues' section of the jmx console with the correct
> number of dequeued messages.
>    b.-ActiveMQ sends nothing to SunMQ. The jmx console doesn't show the
> bridged queue, however, there's an advisory topic called:
> ActiveMQ.Advisory.Consumer.Queue.SUNRECV.
>        When a new message is sent to SUNRECV, the queue is created in
> ActiveMQ, but the old messages seems to be lost (The jmx console shows 1 for
> the Enqueue and Dequeue count and SunMQ shows one message in its queue).
>
>
>  This situation is far from desired. So, I would like to know:
>  -Is there any way to make ActiveMQ broker test the bridge connection state?

No not really

> Is there any way to force a reconnection?

If a send fails we should tear down and reconnect the producer. Could
you raise a JIRA for this please?


>  -Should ActiveMQ detect the remote side shutdown?

It can't really - all it can do is respond to the send/consume failing

-- 

James
-------
http://radio.weblogs.com/0112098/

Mime
View raw message