发布:
@Component
@Slf4j
public class MqttProducer {
private MessageHandler messageHandler;
@Bean
public MqttPahoClientFactory mqttClientFactory() {
DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory();
MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();
mqttConnectOptions.setServerURIs(new String[] {"tcp://tx.njqiteng.club:1883"});
factory.setConnectionOptions(mqttConnectOptions);
// factory.setUserName("username");
// factory.setPassword("password");
return factory;
}
@Bean
public MessageHandler mqttOutbound() {
MqttPahoMessageHandler messageHandler =
new MqttPahoMessageHandler("mqttPub", mqttClientFactory());
messageHandler.setAsync(true);
this.messageHandler = messageHandler;
return messageHandler;
}
public void sendMessage(String topic,String msg){
Message<String> message = MessageBuilder.withPayload(msg).setHeader(MqttHeaders.TOPIC,topic).build();
messageHandler.handleMessage(message);
}
}
订阅
@Component
@Slf4j
public class MqttSubscribe {
@Autowired
QTEnergyMsgHandle qtEnergyMsgHandle;
@Value("${mqtt.topicsend}")
String mqttPlugRpt;
@Value("${mqtt.url}")
String mqttUrl;
@Value("${mqtt.topicrecv}")
String mqttPlugCtrl;
@Bean
public MessageChannel mqttInputChannel() {
MessageChannel messageChannel = new DirectChannel();
((DirectChannel) messageChannel).subscribe(mqttInput());
return messageChannel;
}
//@Bean
// @ServiceActivator(inputChannel = "mqttInputChannel")
public MessageHandler mqttInput() {
return new MessageHandler() {
@Override
public void handleMessage(Message<?> message) throws MessagingException {
System.out.println(message.getPayload());
qtEnergyMsgHandle.handleMqttMsg((String)message.getPayload());
}
};
}
@Bean
public MessageProducer inbound() {
MqttPahoMessageDrivenChannelAdapter adapter =
new MqttPahoMessageDrivenChannelAdapter(mqttUrl, "mossub",mqttPlugCtrl);
adapter.setCompletionTimeout(5000);
adapter.setConverter(new DefaultPahoMessageConverter());
adapter.setOutputChannel(mqttInputChannel());
return adapter;
}
}