[
https://issues.apache.org/activemq/browse/AMQ-2635?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Gary Tully reassigned AMQ-2635:
-------------------------------
Assignee: Gary Tully
> Add setClientInternalExceptionListener to ActiveMQConnectionFactory
> -------------------------------------------------------------------
>
> Key: AMQ-2635
> URL: https://issues.apache.org/activemq/browse/AMQ-2635
> Project: ActiveMQ
> Issue Type: Improvement
> Components: JMS client
> Affects Versions: 5.2.0
> Reporter: Phillip Bayliss
> Assignee: Gary Tully
> Priority: Minor
>
> We have registered a durable topic consumer using
> org.springframework.jms.listener.DefaultMessageListenerContainer. When the
> server is shut down or becomes unavailable we would like the consumer to be
> notified in some way.
> Currently there is an exception logged in activemq on level debug but the
> consumer is not aware that the server is no longer available. Is it possible
> to propogate this exception back through spring or register somehwere in
> activeMQ to capture this 'server unavailable' event?
> Client is linux activemq 5.2, spring 2.5. Server is linux activemq 5.3
> Here is the client log when the server is stopped.
> 2010-03-02 17:07:31,063 [taskExecutor-1] DEBUG 2010-03-02 17:07:32,063
> [taskExecutor-1] DEBUG
> org.springframework.jms.listener.DefaultMessageListenerContainer - Consumer
> [ActiveMQMessageConsumer { value=ID:lab-1-33000-1267511832426-0:2:1:1,
> started=true }] of session [PooledSession { ActiveMQSession
> {id=ID:lab-1-33000-1267511832426-0:2:1,started=true} }] did not receive a
> message
> 2010-03-02 17:07:32,704 [ActiveMQ Transport: tcp://localhost/127.0.0.1:61616]
> DEBUG org.apache.activemq.ActiveMQConnection - Async exception with no
> exception listener: java.io.EOFException
> java.io.EOFException
> at java.io.DataInputStream.readInt(DataInputStream.java:375)
> at
> org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:269)
> at
> org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:210)
> at
> org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:202)
> at
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185)
> at java.lang.Thread.run(Thread.java:619)
> 2010-03-02 17:07:32,706 [ActiveMQ Connection Worker:
> tcp://localhost/127.0.0.1:61616] DEBUG
> org.apache.activemq.transport.tcp.TcpTransport - Stopping transport
> tcp://localhost/127.0.0.1:61616
> 2010-03-02 17:07:33,063 [taskExecutor-1] DEBUG
> org.springframework.jms.listener.DefaultMessageListenerContainer - Consumer
> [ActiveMQMessageConsumer { value=ID:lab-1-33000-1267511832426-0:2:1:1,
> started=true }] of session [PooledSession { ActiveMQSession
> {id=ID:lab-1-33000-1267511832426-0:2:1,started=true} }] did not receive a
> message
> etc. . .
> Spring durable topic registration
> <jms:listener-container connection-factory="jmsFactory"
>
> task-executor="taskExecutor"
>
> acknowledge="transacted"
>
> destination-type="durableTopic"
> client-id="DLT">
> <jms:listener destination="logTopic" ref="listener"
> subscription="durableLogTopic" />
> </jms:listener-container>
> ------
> Don't think there is an easy way. You need to set a
> ClientInternalExceptionListener on the underlying activemq connection, but
> there is no easy way to set that via spring as there is no access to the
> connection.
> One option would be to provide your own connection factory that can wrap and
> delegate to the acivemq connectionfactory and set a
> clientInternalExceptionListener on each returned connection.
> From the implementation of the listener you can do what ever you need.
> Shared instances of transport and exception listeners are already exposed on
> the connection factory, I think it would make sense to also add a shared
> clientInternalExceptionListener option also.
> Could you open a jira issue to track this?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.