A comprehensive desktop application for managing IBM Message Queue (MQ) queue managers, queues, and messages. Built with Java and Eclipse SWT for a native, responsive user interface.
- Features
- Technology Stack
- Prerequisites
- Installation
- Configuration
- Usage Guide
- Troubleshooting
- Project Structure
- Multiple Simultaneous Connections: Manage multiple queue manager connections concurrently
- Connection Profiles: Save and reuse connection configurations
- Connection Testing: Validate connectivity before saving a profile
- SSL/TLS Support: Secure connections to queue managers
- MQCSP Authentication: Modern credential-based authentication support
- Auto-disconnect: Graceful cleanup on application shutdown
- Queue Browsing: View all queues on connected queue managers with filtering support
- Queue Types: Support for Local, Remote, Alias, Model, and Cluster queues
- Queue Properties Display:
- Current and maximum depth
- Open input/output counts
- Description and creation date/time
- Inhibit put/get flags
- Default priority and persistence
- Base queue name (for alias queues)
- Real-time Depth Monitoring: Background thread continuously updates queue depths
- Queue Handles: View all processes/applications currently using a queue:
- Process ID and Thread ID
- User ID and channel name
- Open options (Input/Output/Browse/Inquire)
- Connection IDs
- Message Browsing: Non-destructive queue message inspection
- Browse up to 1000 messages per queue
- Display message metadata: ID, correlation ID, priority, persistence, encoding
- View message content with size information
- Detailed message properties panel
- Message Sending:
- Send single or batch messages to queues
- Configure priority (0-9) and persistence
- Batch sending with configurable delay between messages
- Message Templates:
- Save reusable message patterns
- Template management (create, edit, delete)
- Quick message composition from templates
- Threshold Configuration: Per-queue warning and critical thresholds
- Percentage-based thresholds (relative to max depth)
- Absolute value thresholds
- Visual Alerts: Color-coded queue list
- Green: Has messages, within normal thresholds
- Yellow: Warning threshold exceeded
- Red: Critical threshold exceeded
- White: Empty queue
- Sound Alerts:
- Audio notifications for threshold breaches
- 600Hz tone for warnings, 800Hz for critical
- Enableable/disableable per preference
- Alert History: Track alert transitions over time
- Background Monitoring Thread: Continuous queue depth updates
- Configurable refresh interval (1-300 seconds)
- Pause/resume functionality
- Auto-refresh Toggle: Enable/disable monitoring from the UI
- Depth Charts: Visual queue depth trends over the last 60 data points
- Full Configuration Export: Export entire hierarchy and connection profiles
- Selective Export: Export specific queue manager or folder hierarchies
- JSON Format: Human-readable configuration files
- Batch Import: Import multiple queue managers and hierarchies at once
- Folder Structure: Organize queue managers in logical folder hierarchies
- Tree Navigation: Browse connections in an intuitive tree view
- Persistent Organization: Hierarchy automatically saved and restored
| Component | Technology |
|---|---|
| Language | Java 17+ |
| GUI Framework | Eclipse SWT (Standard Widget Toolkit) |
| Charts | JFreeChart / SWT Chart |
| IBM MQ Client | com.ibm.mq.allclient 9.4.4.1 |
| Serialization | Jackson, Gson |
| Logging | SLF4J with Logback |
| Build Tool | Maven |
| Native Compilation | GraalVM (optional) |
- Java: JDK 17 or higher
- Maven: 3.6+
- IBM MQ: Access to an IBM MQ queue manager (local or remote)
- Operating System: Windows x86_64, Linux x86_64, or macOS
# Clone the repository
git clone https://github.com/tonioBus/IBM-MQ-GUI.git
cd IBM-MQ-GUI
# Build the application
mvn clean package
# Build native image (optional, requires GraalVM)
mvn clean package -Pnative# Using Maven
mvn exec:java -Dexec.mainClass="com.aquila.ibm.mq.gui.IBMMQViewer"
# Using JAR
java -jar target/IBM-MQ-GUI-1.0-SNAPSHOT.jar
# Native executable (if built with native profile)
./IBMMQViewerThe default configuration targets Windows x86_64. For other platforms, update the SWT dependency in pom.xml:
| Platform | Artifact ID |
|---|---|
| Windows x86_64 | org.eclipse.swt.win32.win32.x86_64 |
| Linux x86_64 | org.eclipse.swt.gtk.linux.x86_64 |
| macOS x86_64 | org.eclipse.swt.cocoa.macosx.x86_64 |
| macOS ARM64 | org.eclipse.swt.cocoa.macosx.aarch64 |
All configuration files are stored in ~/.ibmmqgui/:
| File | Description |
|---|---|
connections.json |
Queue manager connection profiles |
thresholds.json |
Queue alert thresholds |
hierarchy.json |
Folder and queue manager organization |
hierarchy.json.bak |
Automatic backup of hierarchy |
message_templates.json |
Saved message templates |
| Property | Description | Default |
|---|---|---|
host |
Queue manager hostname or IP | - |
port |
Listener port | 1414 |
channel |
Server connection channel | - |
queueManager |
Queue manager name | - |
username |
Authentication username | - |
password |
Authentication password | - |
sslEnabled |
Enable SSL/TLS | false |
| Property | Description | Default |
|---|---|---|
warningThreshold |
Warning level value | 70 |
criticalThreshold |
Critical level value | 90 |
warningThresholdPercentage |
Use percentage for warning | true |
criticalThresholdPercentage |
Use percentage for critical | true |
enabled |
Enable threshold alerts | true |
Logs are written to logs/ibmmqgui.log with daily rotation and 30-day retention.
To adjust log levels, modify src/main/resources/logback.xml:
<root level="INFO">
<!-- Change to DEBUG, WARN, or ERROR as needed -->
</root>- Click File > New Connection or use the toolbar button
- Enter connection details:
- Queue Manager Name
- Host address
- Port (default: 1414)
- Channel name
- Credentials (if required)
- Click Test Connection to validate
- Click Save to store the profile
- Select a connected queue manager from the tree view
- Queues are displayed in the main panel with depth information
- Click on a queue to view its properties
- Double-click to browse messages
- Queues are color-coded based on depth thresholds:
- Green: Has messages, within normal thresholds
- Yellow: Warning threshold exceeded
- Red: Critical threshold exceeded
- White: Empty queue
- Select a queue and open the message browser
- Messages are displayed non-destructively (browse mode)
- Click a message to view its full content and properties
- Message details include:
- Message ID and Correlation ID
- Priority and Persistence
- Put date/time
- Message format and encoding
- Full message body
- Use the refresh button to update the message list
- Right-click on a queue and select Send Message
- Enter or paste message content
- Configure options:
- Priority (0-9)
- Persistence (persistent/non-persistent)
- Batch count for multiple messages
- Delay between batch messages
- Optionally save as template for reuse
- Click Send
- In the Send Message dialog, compose your message
- Click Save as Template and provide a name
- To reuse, select the template from the dropdown
- Templates are stored in
~/.ibmmqgui/message_templates.json
- Right-click on a queue and select Configure Thresholds
- Set warning threshold (default: 70%)
- Set critical threshold (default: 90%)
- Choose between percentage or absolute values
- Enable/disable sound alerts
- Click Save
- Enable View > Auto-refresh to start background monitoring
- Configure refresh interval in preferences
- Switch to the Depth Chart tab to see real-time visualization
- The chart shows the last 60 data points for the selected queue
- Select a queue from the list
- Open the Handles tab
- View all applications/processes using the queue:
- Application name
- Process ID and Thread ID
- User ID
- Connection type (Input/Output/Browse)
Exporting:
- Right-click on a folder or queue manager in the tree
- Select Export Configuration
- Choose save location
- Configuration is saved as JSON
Importing:
- Click File > Import Configuration
- Select the JSON configuration file
- Review imported items
- Confirm import
{
"label": "Production Environment",
"queueManagers": {
"QM1_ID": {
"name": "QM1",
"host": "192.168.1.100",
"port": 1414,
"channel": "APP.SVRCONN",
"queueManager": "QM1",
"username": "mquser",
"password": "password",
"sslEnabled": false
}
},
"hierarchy": {
"Production": {
"type": "folder",
"children": {
"Queue Browser": {
"type": "queue",
"queueMgr": "QM1_ID",
"children": {
"APP.REQUEST.QUEUE": "Request Queue",
"APP.RESPONSE.QUEUE": "Response Queue"
}
}
}
}
}
}| Error Code | Description | Solution |
|---|---|---|
| MQRC 2009 | Connection broken | Check network connectivity and queue manager status |
| MQRC 2035 | Not authorized | Verify username/password and user permissions |
| MQRC 2059 | Queue manager not available | Ensure queue manager is running |
| MQRC 2393 | Authentication error | Check MQCSP credentials configuration |
| MQRC 2538 | Host not available | Verify hostname and network connectivity |
| MQRC 2540 | Channel not available | Check channel name and listener status |
-
Verify queue manager is running:
dspmq -m <QMGR_NAME>
-
Check listener status:
echo "display lsstatus(*)" | runmqsc <QMGR_NAME>
-
Verify channel configuration:
echo "display channel(<CHANNEL_NAME>)" | runmqsc <QMGR_NAME>
-
Check authentication settings:
echo "display authinfo(*)" | runmqsc <QMGR_NAME>
The application uses SWT which is platform-specific. Ensure the correct SWT dependency is configured in pom.xml for your operating system.
Application logs are located at:
logs/ibmmqgui.log- Main application log- Console output when running with Maven
For detailed troubleshooting information, see TROUBLESHOOTING.md.
IBM-MQ-GUI/
├── pom.xml # Maven configuration
├── README.md # This file
├── TROUBLESHOOTING.md # Detailed troubleshooting guide
├── doc/ # Documentation and examples
│ ├── import.json # Example import configuration
│ └── setup.txt # MQ setup instructions
├── src/main/java/ # Java source code
│ └── com/aquila/ibm/mq/gui/
│ ├── IBMMQViewer.java # Main entry point
│ ├── config/ # Configuration management
│ │ ├── Configuration.java
│ │ └── AlertManager.java
│ ├── model/ # Data models
│ │ ├── QueueManagerConfig.java
│ │ ├── QueueInfo.java
│ │ ├── MessageInfo.java
│ │ ├── ThresholdConfig.java
│ │ └── MessageTemplate.java
│ ├── mq/ # IBM MQ integration
│ │ ├── MQConnectionManager.java
│ │ ├── QueueService.java
│ │ ├── MessageService.java
│ │ └── QueueMonitor.java
│ ├── ui/ # SWT UI components
│ │ ├── MainWindow.java
│ │ ├── MessageBrowserPanel.java
│ │ ├── QueuePropertiesPanel.java
│ │ ├── DepthChartPanel.java
│ │ └── various dialogs
│ ├── util/ # Utility classes
│ │ ├── ImportExportUtil.java
│ │ ├── SoundPlayer.java
│ │ └── TemplateProcessor.java
│ └── importation/ # Import framework
├── src/main/resources/ # Resources
│ ├── logback.xml # Logging configuration
│ └── icons/ # Application icons
├── src/test/ # Unit tests
└── logs/ # Application logs
This project is provided as-is for IBM MQ browsing purposes.
Contributions are welcome. Please submit issues and pull requests to the GitHub repository.
Anthony Bussani