gpt4 book ai didi

java - Mqtt-Spring Boot 中的集成

转载 作者:太空宇宙 更新时间:2023-11-04 09:47:25 24 4
gpt4 key购买 nike

我尝试将 mqtt 集成到我的 Spring Boot Java 项目中。

我的依赖:

<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-mqtt</artifactId>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>jackson-module-kotlin</artifactId>
<groupId>com.fasterxml.jackson.module</groupId>
</exclusion>
</exclusions>
</dependency>

我创建了一个名为 MqttClient 的 Java 类。我在这里尝试一下:

IMqttClient publisher = new org.eclipse.paho.client.mqttv3.MqttClient("pfad", publisherId);

我在这里收到错误:org.eclipse.paho.client.mqttv3.MqttClient

错误:未处理的异常:org.eclipse.paho.client.mqttv3.MqttException

知道出了什么问题吗?

最佳答案

不知道问题出在哪里?我确实按照以下方式解决了同样的问题。看看它是否适合你。我有一个 mqtt 网关类定义如下。

import org.springframework.integration.annotation.MessagingGateway;

@MessagingGateway(defaultRequestChannel = "mqttPromiseOutboundChannel")
public interface MqttPromiseGateway {

void sendToMqtt(String data);
}

当我想向 Mqtt 发送消息时,我会 Autowiring 定义的网关类。

@Autowired
private MqttPromiseGateway mqttPromiseGateway;

现在我可以使用该网关通过 Mqtt channel 发送消息。

 mqttPromiseGateway.sendToMqtt(content);

我们还为 MqttProducer 定义了一个服务。

@Service
public class DemoMqttProducer {

@Bean
public MqttPahoClientFactory mqttClientFactory() {
DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory();
MqttConnectOptions options = new MqttConnectOptions();
options.setServerURIs(new String[] { "tcp://localhost:1883" });
options.setUserName("myusername");
options.setPassword("mypassword#".toCharArray());
factory.setConnectionOptions(options);
return factory;
}


@Bean
@ServiceActivator(inputChannel = "mqttPromiseOutboundChannel")
public MessageHandler mqttPromiseOutbound() {
MqttPahoMessageHandler messageHandler =
new MqttPahoMessageHandler("testClient", mqttClientFactory());
messageHandler.setAsync(true);
messageHandler.setDefaultTopic("Promise");
return messageHandler;
}

@Bean
public MessageChannel mqttOutboundChannel() {
return new DirectChannel();
}
@Bean
public MessageChannel mqttPromiseOutboundChannel() {
return new DirectChannel();
}
@Bean
public IntegrationFlow mqttInFlow() {
return IntegrationFlows.from(mqttInbound())
.transform(p -> p + ", received from MQTT")
.handle(logger())
.get();
}

@Bean
public MessageProducerSupport mqttInbound() {
MqttPahoMessageDrivenChannelAdapter adapter = new MqttPahoMessageDrivenChannelAdapter("siSampleConsumer",
mqttClientFactory(), "Promise");
adapter.setCompletionTimeout(5000);
adapter.setConverter(new DefaultPahoMessageConverter());
adapter.setQos(1);
return adapter;
}

}

mqttInflow 方法将获取传入消息并将其发送到记录器。如果您想以不同的方式处理它,则需要更改该方法。

关于java - Mqtt-Spring Boot 中的集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55256254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com