Search in sources :

Example 1 with MqttClientPoolSetting

use of org.eclipse.kapua.transport.mqtt.pooling.setting.MqttClientPoolSetting in project kapua by eclipse.

the class PooledMqttClientFactory method create.

/**
 * Creates the {@link MqttClient} for the {@link MqttClientPool}.
 *
 * <p>
 * The client is initialized and connected. In case of any failure on connect operation, an exception is thrown and the the created client is destroyed.
 * </p>
 *
 * @throws Exception
 *             FIXME [javadoc] document exception.
 * @since 1.0.0
 */
@Override
public MqttClient create() throws Exception {
    // 
    // User pwd generation
    MqttClientSetting mqttClientSettings = MqttClientSetting.getInstance();
    MqttClientPoolSetting mqttClientPoolSettings = MqttClientPoolSetting.getInstance();
    String username = mqttClientSettings.getString(MqttClientSettingKeys.TRANSPORT_CREDENTIAL_USERNAME);
    char[] password = mqttClientSettings.getString(MqttClientSettingKeys.TRANSPORT_CREDENTIAL_PASSWORD).toCharArray();
    String clientId = ClientIdGenerator.getInstance().next(mqttClientPoolSettings.getString(MqttClientPoolSettingKeys.CLIENT_POOL_CLIENT_ID_PREFIX));
    URI brokerURI = SystemUtils.getBrokerURI();
    // 
    // Get new client and connection options
    MqttClientConnectionOptions connectionOptions = new MqttClientConnectionOptions();
    connectionOptions.setClientId(clientId);
    connectionOptions.setUsername(username);
    connectionOptions.setPassword(password);
    connectionOptions.setEndpointURI(brokerURI);
    // 
    // Connect client
    MqttClient kapuaClient = new MqttClient();
    try {
        kapuaClient.connectClient(connectionOptions);
    } catch (KapuaException ke) {
        kapuaClient.terminateClient();
        throw ke;
    }
    return kapuaClient;
}
Also used : MqttClientSetting(org.eclipse.kapua.transport.mqtt.setting.MqttClientSetting) MqttClient(org.eclipse.kapua.transport.mqtt.MqttClient) MqttClientPoolSetting(org.eclipse.kapua.transport.mqtt.pooling.setting.MqttClientPoolSetting) KapuaException(org.eclipse.kapua.KapuaException) MqttClientConnectionOptions(org.eclipse.kapua.transport.mqtt.MqttClientConnectionOptions) URI(java.net.URI)

Example 2 with MqttClientPoolSetting

use of org.eclipse.kapua.transport.mqtt.pooling.setting.MqttClientPoolSetting in project kapua by eclipse.

the class MqttClientPoolTest method testPoolBorrowMax.

/**
 * Ignoring this test for a while. We should fix the build in the first place and then use embedded ActiveMQ
 * broker for tests.
 */
@Ignore
@Test
public void testPoolBorrowMax() throws Exception {
    // 
    // Get pool
    MqttClientPool transportPool = MqttClientPool.getInstance();
    // 
    // Test max borrow clients
    MqttClientPoolSetting setting = MqttClientPoolSetting.getInstance();
    long maxClients = setting.getLong(MqttClientPoolSettingKeys.CLIENT_POOL_SIZE_TOTAL_MAX);
    List<MqttClient> mqttClients = new ArrayList<>();
    for (int i = 0; i < maxClients; i++) {
        mqttClients.add(transportPool.borrowObject());
    }
    // Verify borrowed clients
    for (MqttClient t : mqttClients) {
        assertNotNull("mqttClient", t);
        assertTrue("mqttClient.isConnected", t.isConnected());
    }
    assertEquals("numActiveClients", maxClients, transportPool.getNumActive());
    // Ask one more transport client
    try {
        mqttClients.add(transportPool.borrowObject());
        fail("Should have thrown " + NoSuchElementException.class.getName() + " exception");
    } catch (NoSuchElementException nsee) {
    // All ok
    } catch (Exception e) {
        assertEquals("Should have thrown " + NoSuchElementException.class.getName() + " exception", NoSuchElementException.class, e.getClass());
    }
    // 
    // Return clients
    Iterator<MqttClient> transportClientIterator = mqttClients.iterator();
    while (transportClientIterator.hasNext()) {
        transportPool.returnObject(transportClientIterator.next());
    }
    assertEquals("numActiveClients", 0, transportPool.getNumActive());
}
Also used : MqttClient(org.eclipse.kapua.transport.mqtt.MqttClient) ArrayList(java.util.ArrayList) MqttClientPoolSetting(org.eclipse.kapua.transport.mqtt.pooling.setting.MqttClientPoolSetting) MqttClientPool(org.eclipse.kapua.transport.mqtt.pooling.MqttClientPool) NoSuchElementException(java.util.NoSuchElementException) NoSuchElementException(java.util.NoSuchElementException) Ignore(org.junit.Ignore) Test(org.junit.Test)

Aggregations

MqttClient (org.eclipse.kapua.transport.mqtt.MqttClient)2 MqttClientPoolSetting (org.eclipse.kapua.transport.mqtt.pooling.setting.MqttClientPoolSetting)2 URI (java.net.URI)1 ArrayList (java.util.ArrayList)1 NoSuchElementException (java.util.NoSuchElementException)1 KapuaException (org.eclipse.kapua.KapuaException)1 MqttClientConnectionOptions (org.eclipse.kapua.transport.mqtt.MqttClientConnectionOptions)1 MqttClientPool (org.eclipse.kapua.transport.mqtt.pooling.MqttClientPool)1 MqttClientSetting (org.eclipse.kapua.transport.mqtt.setting.MqttClientSetting)1 Ignore (org.junit.Ignore)1 Test (org.junit.Test)1