Skip to main content
Blackboard Help

ActiveMQ Messaging

ActiveMQ is used in Blackboard Learn as an asynchronous message queue service to provide a distributed, fault-tolerant mechanism for sending messages between load-balance application servers to be processed in the background of the application. ActiveMQ is bundled in Learn and is automatically installed when Learn is installed.

In addition to data integration, other areas that rely on ActiveMQ include:

  • Notifications
  • Blackboard Collaborate
  • Date management
  • Item analysis
  • Building blocks
  • Course copy, archive, and restore operations

ActiveMQ installs with the default communications port 61616. All application servers within the given installation must have the same communication port open. If this port is not open, the servers are not able to connect to the ActiveMQ broker. This causes some application functions (for example, manual integration feeds through the user interface or command-line) to work incorrectly.

Change the ActiveMQ default communications port

If the default communications port for ActiveMQ is not compatible with your installation, you may change it. Change the communications port by editing bbconfig.messagequeue.transport.port in the file. If you change the port on one application server, you must make the same change on all application servers within the given installation. To save your changes you must update the configuration by running the PushConfigUpdates command. This action restarts services.

Since this change must be made on all appservers at the same time, use your scheduled maintenance window and not a rolling restart.

More on File

Resolve host names

Each application server must be able to resolve the unique hostname configured by the other application servers to communicate with them. This host name is configured in bbconfig.appserver.fullhostname in the file.

Hosts much be reachable not only on the ActiveMQ port, but they must also communicate on a non-configurable, randomly assigned port for proper cache notification. Ensure that ports 1024 and higher are open for inter-node communication over TCP. Otherwise, cached data updates will take effect only on other servers, and there will be a significant delay (cache timeout period).

Log events

Events related to this message queue are appended to the tomcat log files.

The logs for Service Pack 9 and above:


The logs for Service Pack 8 and older:


Verify ActiveMQ database tables

  1. Open up the latest application logs:
    • /logs/tomcat/activemq.txt
    • /logs/tomcat/catalina-log.txt
    • blackboard/logs/tomcat/stdout-stderr-TIMESTAMP.log
  2. Verify that they do not contain error entries indicating ActiveMQ datastore corruption, such as:

    org.apache.kahadb.journal.Journal - Corrupt journal records found

  3. If corruption is evident, proceed with the following steps.
    1. Stop services on all application servers, including the collab-server and any stand alone JVMs such as the snapshot tool, batch archive, and background system tasks.
    2. Remove (or rename) the /content/vi/bb_bb60/activemq/messageQueueService/kaha folder to trigger the recreation of ActiveMQ's tablespaces.

    3. Start services on all application servers.

Persistence methods update

In the Blackboard Learn 9.1 Q2 2016 release, ActiveMQ uses a new implementation to improve the overall reliability of the service and increase memory allocation to the broker.

The three implementations are:

  • KahaDB File-based persistence
  • Blocking JDBC-based locking
  • Lease-based JDBC locking

Some of the implementations are included in base releases, but other implementations may require configuration or patches. Refer to the table below.

  October 2014 Q4 2015 Q2 2016
KahaDB persistence Included in base release Included in base release Not recommended
Blocking-based persistence Patch & configuration needed Included in base release, configuration needed Not recommended
Lease-based persistence Patch & configuration needed Patch & configuration needed Included in base release

More information about setting up lease-based JDBC persistence for ActiveMQ can be found on Behind the Blackboard.

Logs can be found here:

  • blackboard\logs\bb-services-log.txt
  • blackboard\logs\tomcat\activemq.txt
  • blackboard\logs\tomcat\stdout-stderr-DATE.log

Additional logs, listed below, are present in the Q2 2016 release and later.

  • blackboard\logs\activemq-broker\activemq.txt
  • blackboard\logs\activemq-broker\activemq-broker-log.txt
  • blackboard\logs\activemq-broker\stdout-stderr-DATE.log