1
我想配置我的消息驱动通道适配器,以便我可以抓取'连接被拒绝'错误的情况下: 1)消息代理关闭或2)错误经纪人URL指定弹出消息驱动通道适配器:处理连接拒绝错误
我试着用下面的代码这样做,但它没有工作:
<int:channel id="invalidChannel" />
<int-mqtt:message-driven-channel-adapter
id="myAdapter"
client-id="${inbound.client.id}"
url="${host.url}"
topics="${inbound.topic}"
channel="incomingChannel"
error-channel="errorChannel"
client-factory="clientFactory" />
<int:exception-type-router input-channel="errorChannel">
<int:mapping exception-type="java.net.ConnectException" channel="invalidChannel" />
</int:exception-type-router>
<int:service-activator id="ErrorActivator"
input-channel="invalidChannel"
ref="errorListener"
method="processError" />
<bean id="errorListener" class="com.ErrorListener" />
中的processError()方法的定义如下:
public void processError(Message<MessageHandlingException> message)
{
System.out.println("an error/exception occured");
}
我试图抓住它在连接异常的情况下记录为下面的异常:
Unable to connect to server (32103) - java.net.ConnectException: Connection refused: connect
at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:79)
at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:590)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:70)
... 2 more
是否有人可以帮忙吗?
问候
ok。有什么方法可以捕获和处理? – Anand03
不适用。 'MqttPahoMessageDrivenChannelAdapter'中有这样一个钩子。不过,你可以通过''client.connect(connectionOptions)'在其他组件中通过相同的'MqttPahoClientFactory'手工克服它。 –
感谢您的参与。当代理在启动应用程序时不可用时,您建议的方法将起作用。但是,如果代理在应用程序运行时出现故障,则需要以其他方式处理 – Anand03