Integrate with RabbitMQ Data in JReport Designer

Jerod Johnson
Jerod Johnson
Director, Technology Evangelism
Create charts and reports based on RabbitMQ data in JReport Designer.

The CData JDBC Driver for RabbitMQ data enables access to live data from dashboards and reports as if RabbitMQ were a relational database, allowing you to query RabbitMQ data using familiar SQL queries. This article shows how to connect to RabbitMQ data as a JDBC data source and create reports based on RabbitMQ data in JReport Designer.

Connect to RabbitMQ Data

  1. Edit C:\JReport\Designer\bin\setenv.bat to add the location of the JAR file to the ADDCLASSPATH variable:
    ...
    set ADDCLASSPATH=%JAVAHOME%\lib\tools.jar;C:\Program Files\CData\CData JDBC Driver for RabbitMQ 2016\lib\cdata.jdbc.api.jar;
    ...
    
  2. Create a new data source by clicking File New Data Source.
  3. In the resulting dialog, create a name for the data source (CData JDBC Driver for RabbitMQ), select JDBC, and click OK.
  4. In the Get JDBC Connection Information dialog you will configure your connection to the JDBC driver:
    • Driver: Be sure that the Driver box is checked and fill in the name of the class for the driver:
      cdata.jdbc.api.APIDriver
    • URL: Enter the JDBC URL. This starts with jdbc:api: and is followed by a semicolon-separated list of connection properties.

      About RabbitMQ Management HTTP API

      RabbitMQ is an open-source message broker that supports multiple messaging protocols. The RabbitMQ Management HTTP API provides HTTP-based access to management and monitoring data for a RabbitMQ server. The API exposes information about virtual hosts, exchanges, queues, bindings, connections, channels, consumers, users, permissions, policies, and cluster-wide statistics.

      The Management plugin must be enabled on the RabbitMQ server for the HTTP API to be available. By default, the management interface listens on port 15672.

      Using Basic Authentication

      RabbitMQ Management HTTP API uses HTTP Basic authentication. You must supply the username and password of a RabbitMQ management user.

      To enable access to the management API:

      1. Ensure the RabbitMQ Management plugin is enabled on your server (rabbitmq-plugins enable rabbitmq_management).
      2. Use an existing management user or create one with the appropriate management tag (management, policymaker, monitoring, or administrator).
      3. Note the full base URL of your RabbitMQ Management HTTP API (e.g., http://localhost:15672).

      After configuring your RabbitMQ server, set the following connection properties to connect:

      • AuthScheme: Set this to Basic.
      • URL: Set this to the base URL of your RabbitMQ Management HTTP API (e.g., http://localhost:15672).
      • User: Set this to your RabbitMQ management username (e.g., guest).
      • Password: Set this to your RabbitMQ management password.

      Example connection string:

      Profile=C:\profiles\RabbitMQ.apip;AuthScheme=Basic;URL=http://localhost:15672;User=guest;Password=guest;
      

      Available Tables

      The RabbitMQ profile provides access to the following tables:

      • Overview - Cluster-wide statistics and information about the RabbitMQ node
      • Nodes - Information about individual nodes in the RabbitMQ cluster
      • NodeMemory - Detailed memory usage breakdown for a specific cluster node
      • Connections - List of all open AMQP connections to the broker
      • Channels - List of all open AMQP channels across all connections
      • Consumers - List of all consumers registered across all queues
      • Exchanges - List of exchanges declared across all virtual hosts
      • Queues - List of queues declared across all virtual hosts
      • Bindings - List of all bindings between exchanges and queues
      • VirtualHosts - List of virtual hosts configured on the broker
      • VhostPermissions - User permissions within a specific virtual host
      • Users - List of all RabbitMQ users
      • Permissions - Permission records for all users across all virtual hosts
      • TopicPermissions - Topic-level permission records for all users
      • Policies - List of policies applied to queues and exchanges in virtual hosts
      • OperatorPolicies - List of operator policies applied to queues in virtual hosts
      • Parameters - List of component parameters (e.g., federation, shovel) per virtual host
      • GlobalParameters - List of global parameters that apply across all virtual hosts
      • VhostLimits - Resource limits configured for specific virtual hosts
      • UserLimits - Resource limits configured for specific users
      • FeatureFlags - List of feature flags and their enabled/disabled state on the node
      • DeprecatedFeatures - List of deprecated features and their usage state
      • AuthAttempts - Authentication attempt statistics for the node
      • ClusterName - The name of the RabbitMQ cluster
      • WhoAmI - Information about the currently authenticated management user
      • ExchangeBindingsSource - Bindings for which a specific exchange is the source
      • ExchangeBindingsDestination - Bindings for which a specific exchange is the destination
      • QueueBindings - Bindings for a specific queue within a virtual host

      Built-in Connection String Designer

      For assistance in constructing the JDBC URL, use the connection string designer built into the RabbitMQ JDBC Driver. Either double-click the JAR file or execute the jar file from the command-line.

      java -jar cdata.jdbc.api.jar
      

      Fill in the connection properties and copy the connection string to the clipboard.

      When you configure the JDBC URL, you may also want to set the Max Rows connection property. This will limit the number of rows returned, which is especially helpful for improving performance when designing reports and visualizations.

      Below is a typical JDBC URL:

      jdbc:api:Profile=C:\profiles\\RabbitMQ.apip;AuthScheme=Basic;URL=http://localhost:15672;User=guest;Password=guest;
    • User: The username to authenticate with; typically left blank.
    • Password: The password to authenticate with; typically left blank.
  5. In the Add Table dialog, select the tables you wish to include in your report (or in future reports using this data source) and click Add.

    Click Done once the dialog has completed loading the tables.

  6. In the Catalog Browser, you can create the queries that you will use to populate your reports. You can do this now, or after you create your report. In either case, expand () the data source (CData JDBC Driver for RabbitMQ), right-click on Queries, and select Add Query.
  7. In the Add Table/View/Query dialog, expand () the JDBC URL and Tables and select the table(s) you wish to use in the query and click OK.
  8. In the Query Editor dialog, you can select the columns you wish to include or simply click the SQL button and manually input your own query. For example:
    SELECT ,  FROM AuthAttempts WHERE NodeName = 'rabbit@hostname'
    

    With the query built, click OK to close the Query Editor dialog. At this point you are ready to add RabbitMQ data to a new or existing report.

    NOTE: Now that the query is built, you can create a Business View based on the query. With a Business View, you can create Web reports or library components based on the query. For more information on this, refer to the JReport tutorials.

Add RabbitMQ Data to a Report

You are now ready to create a report with RabbitMQ data.

  1. Create a new report (File New Page Report) or open the Chart Wizard for an existing report.
  2. Select the Query (or create a new one; see above).
  3. Assign a Category and Value for the chart from the columns in your Query and click Finish.
  4. Click the View tab for your report to see the chart.

Ready to get started?

Connect to live data from RabbitMQ with the API Driver

Connect to RabbitMQ