This project is not covered by Drupal’s security advisory policy.

IMPORTANT: This module is deprecated in favor of Drupal Computing module. Major dependent modules such as Recommender API module have been migrated. Please upgrade soon.

This module is useful for running complex 3rd party programs in the backend to analyze/process data stored in the Drupal database. Through Drupal admin interface, you simply issue any pre-defined data processing commands into a queue, which are executed later by the 3rd party programs (perhaps on a remote server) asynchronously.

What features you'll find in this module:

  • A Java library (jar file) to connect to the Drupal database. External 3rd party program can use this library to get data from Drupal database, do some computation, and save the data back to the database.
  • A queue management system to coordinate command executions between Drupal and 3rd party programs.
  • Views integration to display execution history.
  • Triggers/Actions to send notifications of command execution status (to be implemented).
  • REST/Web Services support (to be implemented).
  • Integration with other modules: Drush, Services (to be implemented).

What features you'll find in the Java library (drupal-app.jar):

  • JDBC Connection pooling to Drupal database.
  • Java class hierarchy (or framework) to help you write your Java/Jython/JRuby/R/shell program.
  • Multi-threading for parallel computing.
  • Execute Drush command, which means you can execute any Drupal API using "drush eval".
  • Read/write Drupal variables.
  • Read/write encrypted field from Encrypted Settings Field.
  • ...

The module is different from Drush (or Drupal Batch API, or Queue API) in that:

  1. Drush is synchronized (command gets executed immediately).
  2. Drush has to resides locally where Drupal is installed, whereas Async Command programs could run on a remote computer.
  3. Drush requires PHP, but Async Command programs could be written in any languages (Python, R, Matlab, Java, Ruby etc).
  4. Async Command is designed specifically for time/resource consuming computation tasks.

The module is different from Beanstalk or other queue management system in that:

  1. Async Command comes with a Java library to help you write 3rd party programs.
  2. In terms of queue management, this module is light-weight compared to Beanstalk (no need to install Beanstalk, less features, but integrate tighter with Drupal
  3. Async Command is not distributed messaging system: it only sends commands to one worker. However, that one worker can further distribute commands to multiple workers (thus implementing a distributed messaging system).

Modules that uses this Async Command module

Note to developers:: This module is still in alpha, and is subject to change anytime. If you use this module for development purpose, please let me know so we can coordinate possible API interface changes.

Developed by Daniel Zhou at Michiza Computing.

Project information