com.apama.cumulocity
Event FullyConcurrentConnection


A connection to Cumulocity IoT which is configured to handle all requests concurrently to improve performance.

For example:
        
// Starting a connection with 4 clients
FullyConcurrentConnection connection := FullyConcurrentConnection.create(4);

// Or alternatively for multi-tenant deployments, use a tenant-specific connection object
// Uses a TenantDetails object as input parameter. TenantDetails can be retrieved using TenantSubscriptionNotifier or ApplicationSubscribedForTenant
// FullyConcurrentConnection connection := FullyConcurrentConnection.createForTenant(tenantDetails, 4);

// Subscribing to a response channel
monitor.subscribe(connection.getChannel(FindManagedObjectResponse.SUBSCRIBE_CHANNEL));

// Requesting via a send channel
FindManagedObject findManagedObject := new FindManagedObject;
findManagedObject.reqId := Util.generateReqId();
send findManagedObject to connection.getChannel(FindManagedObject.SEND_CHANNEL);
Note that requests may be processed out of order when using this connection. To ensure that updates for each managed object are processed in order, use an AutoConcurrentConnection instead.
See Also:
com.apama.cumulocity.TenantSubscriptionNotifier - to retrieve the TenantDetails object for a given tenant.
com.apama.cumulocity.SerialConnection - to create a connection configured to handle all requests using a single client.
com.apama.cumulocity.AutoConcurrentConnection - to create a connection configured to handle requests concurrently unless this could result in getting and setting occurring in the wrong order.
com.apama.cumulocity.SharedConnection - to reuse the global connection instance.

Action summary
 com.apama.cumulocity.FullyConcurrentConnectionstatic create(integer numClients)

Returns a new FullyConcurrentConnection.
 com.apama.cumulocity.FullyConcurrentConnectionstatic createForTenant(com.apama.cumulocity.TenantDetails tenant, integer numClients)

Returns a new FullyConcurrentConnection.
 voiddestroy()

Destroys this connection to Cumulocity IoT.
 stringgetChannel(string channel)

Returns the channel to which events should be sent for concurrent processing.
 
Action detail

create

            com.apama.cumulocity.FullyConcurrentConnection static create(integer numClients)
        
Returns a new FullyConcurrentConnection.

This action must only be used when the application needs to work only with the per-tenant deployment. Use the createForTenant action when the application also needs to work with the multi-tenant deployment.
Parameters:
numClients - The number of simultaneous threads and HTTP client connections to use for requests.
Returns:
The new FullyConcurrentConnection.
See Also:
com.apama.cumulocity.FullyConcurrentConnection#createForTenant() - to create a connection when the application also needs to work with multi-tenant deployment.

createForTenant

            com.apama.cumulocity.FullyConcurrentConnection static createForTenant(com.apama.cumulocity.TenantDetails tenant, integer numClients)
        
Returns a new FullyConcurrentConnection.
Parameters:
tenant - Tenant details.
numClients - The number of simultaneous threads and HTTP client connections to use for requests.
Returns:
The new FullyConcurrentConnection.

destroy

            void destroy()
        
Destroys this connection to Cumulocity IoT.

You should invoke this action on every connection after you have finished using it. Invoking this action on a connection that has already been destroyed does nothing. For example:
        
action ondie() {
connection.destroy();
}

getChannel

            string getChannel(string channel)
        
Returns the channel to which events should be sent for concurrent processing.
Parameters:
channel - The corresponding standard Cumulocity IoT channel for single-threaded processing.
Returns:
The channel to which events should be sent of concurrent processing.