On 8/25/06, Manuel Teira <[EMAIL PROTECTED]> 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/