package com.dji.sample.component.mqtt.config; import com.dji.sample.component.mqtt.model.ChannelName; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.integration.annotation.ServiceActivator; import org.springframework.integration.mqtt.core.MqttPahoClientFactory; import org.springframework.integration.mqtt.outbound.MqttPahoMessageHandler; import org.springframework.integration.mqtt.support.DefaultPahoMessageConverter; import org.springframework.messaging.MessageHandler; /** * Client configuration for outbound messages. * @author sean.zhou * @date 2021/11/10 * @version 0.1 */ @Configuration public class MqttOutboundConfiguration { @Autowired private MqttConfiguration mqttConfiguration; @Autowired private MqttPahoClientFactory mqttClientFactory; /** * Clients of outbound message channels. * @return */ @Bean @ServiceActivator(inputChannel = ChannelName.OUTBOUND) public MessageHandler mqttOutbound() { MqttPahoMessageHandler messageHandler = new MqttPahoMessageHandler( MqttConfiguration.getBasicClientOptions().getClientId() + "_producer_" + System.currentTimeMillis(), mqttClientFactory); DefaultPahoMessageConverter converter = new DefaultPahoMessageConverter(); // use byte types uniformly converter.setPayloadAsBytes(true); messageHandler.setAsync(true); messageHandler.setDefaultQos(0); messageHandler.setConverter(converter); return messageHandler; } }