|  |  |  | 
|---|
|  |  |  | import org.apache.commons.pool2.impl.DefaultPooledObject; | 
|---|
|  |  |  | import org.eclipse.paho.client.mqttv3.MqttClient; | 
|---|
|  |  |  | import org.eclipse.paho.client.mqttv3.MqttConnectOptions; | 
|---|
|  |  |  | import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @Author: liurunyu | 
|---|
|  |  |  | 
|---|
|  |  |  | private final String broker; | 
|---|
|  |  |  | private final String username; | 
|---|
|  |  |  | private final String password; | 
|---|
|  |  |  | private final Boolean useMemoryPersistence; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public MqttClientPooledObjectFactory(String broker, String username, String password) { | 
|---|
|  |  |  | public MqttClientPooledObjectFactory(String broker, String username, String password, boolean useMemoryPersistence) { | 
|---|
|  |  |  | this.broker = broker; | 
|---|
|  |  |  | this.username = username; | 
|---|
|  |  |  | this.password = password; | 
|---|
|  |  |  | this.useMemoryPersistence = useMemoryPersistence; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public MqttClient create() throws Exception { | 
|---|
|  |  |  | String clientId = MqttClient.generateClientId(); | 
|---|
|  |  |  | MqttClient client = new MqttClient(broker, clientId); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MqttClient client = null ; | 
|---|
|  |  |  | // 使用内存持久化而非默认的文件持久化 | 
|---|
|  |  |  | if (useMemoryPersistence) { | 
|---|
|  |  |  | MemoryPersistence persistence = new MemoryPersistence(); | 
|---|
|  |  |  | client = new MqttClient(broker, clientId, persistence); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | client = new MqttClient(broker, clientId); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | MqttConnectOptions options = new MqttConnectOptions(); | 
|---|
|  |  |  | options.setUserName(username); | 
|---|
|  |  |  | options.setPassword(password.toCharArray()); | 
|---|