Spring integration Spring Mqtt:MqttPahoMessageDrivenChannelAdapter-连接丢失:连接丢失;重试

Spring integration Spring Mqtt:MqttPahoMessageDrivenChannelAdapter-连接丢失:连接丢失;重试,spring-integration,Spring Integration,在尝试使用SpringMQTT集成时,我们看到了本主题中提到的一个异常 设置详细信息如下所示: 1) 我们有两种不同的消息适配器:消息驱动通道适配器和出站通道适配器。两者都有独特的客户端 2) 桌面应用程序用作Mqtt客户机来发布一些由消息驱动的通道适配器处理的消息。示例代码如下所示: ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); DefaultM

在尝试使用SpringMQTT集成时,我们看到了本主题中提到的一个异常

设置详细信息如下所示: 1) 我们有两种不同的消息适配器:消息驱动通道适配器和出站通道适配器。两者都有独特的客户端

2) 桌面应用程序用作Mqtt客户机来发布一些由消息驱动的通道适配器处理的消息。示例代码如下所示:

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
            DefaultMqttPahoClientFactory mqttClientFactory = (DefaultMqttPahoClientFactory) ac.getBean("clientFactory");
            MqttClient gatewayClient = mqttClientFactory.getClientInstance("tcp://abc.com:1883", "STCLP014CI021CLIENT1");
            String test = "this is test"
            gatewayClient.connect();
            MqttMessage message = new MqttMessage(test.getBytes());
            message.setQos(1);
            gatewayClient.publish("store/entity/mpg/zmesg/fromdevice/014/00021/eco/pos/a56f4302004b1200/1420221417963/2ce6f45f-97a6-49d2-91e5-640effcfa651/192.168.10.70", message);
            gatewayClient.disconnect();
    public void processMessage(String message)
    {

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
            System.out.println("message received  " + message);

String response = "response message";

MessageChannel responseChannel = (MessageChannel) ac.getBean("mpgResponseChannel");
            responseChannel.send(new GenericMessage<String>(response));   
}
3) 为消息驱动通道适配器配置的ListnerBean处理传入消息,并发布对出站通道适配器通道的响应

示例代码如下所示:

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
            DefaultMqttPahoClientFactory mqttClientFactory = (DefaultMqttPahoClientFactory) ac.getBean("clientFactory");
            MqttClient gatewayClient = mqttClientFactory.getClientInstance("tcp://abc.com:1883", "STCLP014CI021CLIENT1");
            String test = "this is test"
            gatewayClient.connect();
            MqttMessage message = new MqttMessage(test.getBytes());
            message.setQos(1);
            gatewayClient.publish("store/entity/mpg/zmesg/fromdevice/014/00021/eco/pos/a56f4302004b1200/1420221417963/2ce6f45f-97a6-49d2-91e5-640effcfa651/192.168.10.70", message);
            gatewayClient.disconnect();
    public void processMessage(String message)
    {

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
            System.out.println("message received  " + message);

String response = "response message";

MessageChannel responseChannel = (MessageChannel) ac.getBean("mpgResponseChannel");
            responseChannel.send(new GenericMessage<String>(response));   
}
有人能就上述问题提出建议吗

有没有办法确保入站适配器在消息发布到出站适配器后不会断开连接


问候。

需要更多的StackTrace,但无论如何,我看到了使用Spring的坏方法

我认为您应该从Spring核心开始,研究什么是依赖注入和控制反转

如果你说你听的是
,我看不出为什么不使用
并向
发送消息

为此,请按照Spring集成文档了解如何使用POJO方法调用


无论如何,为每条消息创建一个新的上下文是个坏主意…

需要查看更多StackTrace,但无论如何,我看到了使用Spring的坏方法

我认为您应该从Spring核心开始,研究什么是依赖注入和控制反转

如果你说你听的是
,我看不出为什么不使用
并向
发送消息

为此,请按照Spring集成文档了解如何使用POJO方法调用

无论如何,为每条消息创建一个新的上下文是一个坏主意…

得到相同的错误。。得到相同的错误。。