JBoss Messaging 2.0 User Manual

Setting the Standard for High Performance Messaging


Table of Contents

1. Preface
2. Messaging Concepts
2.1. Messaging Concepts
2.2. Messaging styles
2.2.1. The Message Queue Pattern
2.2.2. The Publish-Subscribe Pattern
2.3. Delivery guarantees
2.4. Transactions
2.5. Durability
2.6. Messaging APIs and protocols
2.6.1. Java Message Service (JMS)
2.6.2. System specific APIs
2.6.3. STOMP
2.6.4. AMQP
2.6.5. REST
2.7. High Availability
2.8. Clusters
2.9. Bridges and routing
3. Architecture
3.1. Core Architecture
3.2. JBoss Messaging embedded in your own application
3.3. JBoss Messaging integrated with a JEE application server
3.4. JBoss Messaging stand-alone server
4. Using the Server
4.1. Starting and Stopping the standalone server
4.2. Server JVM settings
4.3. Server classpath
4.4. Library Path
4.5. System properties
4.6. Configuration files
4.7. JBoss Microcontainer Beans File
4.8. The main configuration file.
5. Using JMS
5.1. A simple ordering system
5.2. JMS Server Configuration
5.3. JNDI configuration
5.4. The code
5.5. Directly instantiating JMS Resources without using JNDI
5.6. Setting The Client ID
5.7. Setting The Batch Size for DUPS_OK
5.8. Setting The Transaction Batch Size
6. Using Core
6.1. Core Messaging Concepts
6.1.1. Message
6.1.2. Address
6.1.3. Queue
6.1.4. ClientSessionFactory
6.1.5. ClientSession
6.1.6. ClientConsumer
6.1.7. ClientProducer
6.2. A simple example of using Core
7. Mapping JMS Concepts to the Core API
8. The Client Classpath
8.1. Pure Core Client
8.2. JMS Client
8.3. JNDI
9. Examples
9.1. JMS Examples
9.1.1. Application-Layer Failover
9.1.2. Automatic (Transparent) Failover
9.1.3. Automatic Reconnect
9.1.4. Browser
9.1.5. Core Bridge Example
9.1.6. Client Kickoff
9.1.7. Client Side Load-Balancing
9.1.8. Clustered Topic
9.1.9. Dead Letter
9.1.10. Delayed Redelivery
9.1.11. Divert
9.1.12. Durable Subscription
9.1.13. Embedded
9.1.14. HTTP Transport
9.1.15. Instantiate JMS Objects Directly
9.1.16. Interceptor
9.1.17. JAAS
9.1.18. JMX Management
9.1.19. Large Message
9.1.20. Last-Value Queue
9.1.21. Load Balanced Clustered Queue
9.1.22. Management
9.1.23. Management Notification
9.1.24. Message Consumer Rate Limiting
9.1.25. Message Counter
9.1.26. Message Expiration
9.1.27. Message Group
9.1.28. Message Producer Rate Limiting
9.1.29. Message Priority
9.1.30. Message Redistribution
9.1.31. No Consumer Buffering
9.1.32. Paging
9.1.33. Pre-Acknowledge
9.1.34. Queue
9.1.35. Queue Requestor
9.1.36. Queue with Message Selector
9.1.37. Request-Response
9.1.38. Scheduled Message
9.1.39. Security
9.1.40. Send Acknowledgements
9.1.41. Static Message Selector
9.1.42. Static Message Selector Using JMS
9.1.43. SSL Transport
9.1.44. Symmetric Cluster
9.1.45. Temporary Queue
9.1.46. Topic
9.1.47. Topic Hierarchy
9.1.48. Topic Selector 1
9.1.49. Topic Selector 2
9.1.50. Transactional Session
9.1.51. XA Heuristic
9.1.52. XA Receive
9.1.53. XA Send
9.1.54. XA with Transaction Manager
9.2. Core API Examples
9.2.1. Embedded
9.3. Java EE Examples
9.3.1. EJB/JMS Transaction
9.3.2. HAJNDI (High Availability)
9.3.3. Resource Adapter Configuration
9.3.4. JMS Bridge
9.3.5. MDB (Message Driven Bean)
9.3.6. Servlet Transport
9.3.7. XA Recovery
10. Routing Messages With Wild Cards
11. Understanding the JBoss Messaging Wildcard Syntax
12. Filter Expressions
13. Persistence
13.1. Configuring the bindings journal
13.2. Configuring the message journal
13.3. Installing AIO
13.4. Configuring JBoss Messaging for Zero Persistence
14. Configuring the Transport
14.1. Understanding Acceptors
14.2. Understanding Connectors
14.3. Configuring the transport directly from the client side.
14.4. Configuring the Netty transport
14.4.1. Configuring Netty TCP
14.4.2. Configuring Netty SSL
14.4.3. Configuring Netty HTTP
14.4.4. Configuring Netty Servlet
15. Dead Connections and Session Multiplexing
15.1. Cleaning up Dead Connection Resources on the Server
15.2. Detecting failure from the client side.
15.3. Session Multiplexing
16. Resource Manager Configuration
17. Flow Control
17.1. Consumer Flow Control
17.1.1. Window-Based Flow Control
17.1.1.1. Using Core API
17.1.1.2. Using JMS
17.1.2. Rate limited flow control
17.1.2.1. Using Core API
17.1.2.2. Using JMS
17.2. Producer flow control
17.2.1. Window based flow control
17.2.2. Rate limited flow control
17.2.2.1. Using Core API
17.2.2.2. Using JMS
18. Command Buffering
19. Guarantees of Transactional and Non-Transactional Sends and Asynchronous Send Acknowledgements
19.1. Guarantees of Transaction Completion
19.2. Guarantees of Non Transactional Message Sends
19.3. Guarantees of Non Transactional Acknowledgements
19.4. Asynchronous Send Acknowledgements
19.4.1. Asynchronous Send Acknowledgements
20. Message Redelivery and Undelivered Messages
20.1. Delayed Redelivery
20.1.1. Configuring Delayed Redelivery
20.1.2. Example
20.2. Dead Letter Addresses
20.2.1. Configuring Dead Letter Addresses
20.2.2. Dead Letter Properties
20.2.3. Example
20.3. Delivery Count Persistence
21. Message Expiry
21.1. Message Expiry
21.2. Configuring Expiry Addresses
21.3. Configuring The Expiry Reaper Thread
21.4. Example
22. Large Messages
22.1. Configuring the server
22.2. Setting the limits
22.2.1. Using Core API
22.2.2. Using JMS
22.3. Streaming large messages
22.3.1. Streaming over Core API
22.3.2. Streaming over JMS
22.4. Streaming Alternative
22.5. Other Types of Messages
22.6. Resending a large message
22.7. Large message example
23. Paging
23.1. Page Files
23.2. Global Paging Mode
23.2.1. Configuration
23.3. Address Paging Mode
23.3.1. Configuration
23.4. Caution with Addresses with Multiple Queues
23.5. Example
24. Queue Attributes
24.1. Predefined Queues
24.2. Using the API
24.3. Configuring Queues Via Address Settings
25. Scheduled Messages
25.1. Scheduled Delivery Property
25.2. Example
26. Last-Value Queues
26.1. Configuring Last-Value Queues
26.2. Using Last-Value Property
26.3. Example
27. Message Grouping
27.1. Configuring Message Grouping
27.2. Using Core API
27.3. Using JMS
27.4. Example
28. Pre-Acknowledge Mode
28.1. Using PRE_ACKNOWLEDGE
28.2. Example
29. Management
29.1. The Management API
29.1.1. Core Management API
29.1.1.1. Core Server Management
29.1.1.2. Core Address Management
29.1.1.3. Core Queue Management
29.1.1.4. Other Core Resources Management
29.1.2. JMS Management API
29.1.2.1. JMS Server Management
29.1.2.2. JMS ConnectionFactory Management
29.1.2.3. JMS Queue Management
29.1.2.4. JMS Topic Management
29.2. Using Management Via JMX
29.2.1. Configuring JMX
29.2.2. Example
29.3. Using Management Via Core API
29.3.1. Configuring Core Management
29.4. Using Management Via JMS
29.4.1. Configuring JMS Management
29.4.2. Example
29.5. Management Cluster Password
29.6. Management Notifications
29.6.1. JMX Notifications
29.6.2. Core Messages Notifications
29.6.2.1. Configuring The Core Management Notification Address
29.6.3. JMS Messages Notifications
29.6.4. Example
29.7. Message Counters
29.7.1. Configuring Message Counters
29.7.2. Example
30. Security
30.1. Role based security for addresses
30.2. Secure Sockets Layer (SSL) Transport
30.3. Basic user credentials
30.4. Changing the security manager
30.5. JAAS Security Manager
30.5.1. Example
30.6. JBoss AS Security Manager
30.7. Changing the Management Password for Clustering
31. Application Server Integration and Java EE
31.1. Using and Configuring the JCA Adapter
31.1.1. Adapter Global properties
31.1.2. Adapter Outbound configuration
31.1.3. Adapter Inbound configuration
31.2. Using JBM with MDBs in JBoss AS
31.3. High Availability JNDI (HA-JNDI)
31.4. The JMS Bridge
31.4.1. JMS Bridge Parameters
31.4.2. Source and Target Connection Factories
31.4.3. Source and Target Destination Factories
31.4.4. Quality Of Service
31.4.4.1. AT_MOST_ONCE
31.4.4.2. DUPLICATES_OK
31.4.4.3. ONCE_AND_ONLY_ONCE
31.4.4.4. Example
31.5. XA Recovery
31.5.1. XA Recovery Configuration
31.5.2. Example
32. Client Reconnection
33. Diverting and Splitting Message Flows
33.1. Exclusive Divert
33.2. Non-exclusive Divert
34. Core Bridges
34.1. Configuring Bridges
35. Duplicate Message Detection
35.1. Using Duplicate Detection for Message Sending
35.2. Configuring the Duplicate ID Cache
35.3. Duplicate Detection and Bridges
35.4. Duplicate Detection and Cluster Connections
35.5. Duplicate Detection and Paging
36. Clusters
36.1. Clusters Overview
36.2. Server discovery
36.2.1. Broadcast Groups
36.2.2. Discovery Groups
36.2.3. Defining Discovery Groups on the Server
36.2.4. Discovery Groups on the Client Side
36.2.4.1. Configuring client discovery using JMS
36.2.4.2. Configuring client discovery using Core
36.3. Server-Side Message Load Balancing
36.3.1. Configuring Cluster Connections
36.4. Client-Side Load balancing
36.5. Specifying Members of a Cluster Explicitly
36.5.1. Specify List of Servers on the Client Side
36.5.1.1. Specifying List of Servers using JMS
36.5.1.2. Specifying List of Servers using the Core API
36.5.2. Specifying List of Servers to form a Cluster
36.6. Message Redistribution
36.7. Cluster topologies
36.7.1. Symmetric cluster
36.7.2. Chain cluster
37. High Availability and Failover
37.1. Server replication
37.1.1. Configuring live-backup pairs
37.1.2. Synchronization of live-backup pairs
37.1.3. Queue activation timeout
37.2. Automatic client failover
37.3. Application-level client failover
38. Libaio Native Libraries
38.1. Compiling the native libraries
38.1.1. Install requirements
38.1.2. Invoking the compilation
39. Thread management
39.1. Server-Side Thread Management
39.1.1. Server Scheduled Thread Pool
39.1.2. General Purpose Server Thread Pool
39.1.3. Expiry Reaper Thread
39.1.4. Asynchronous IO
39.2. Client-Side Thread Management
40. Logging
40.1. Log4j Configuration
40.2. Logging With The JBoss Application Server
41. Embedding JBoss Messaging
41.1. POJO instantiation
41.2. Dependency Frameworks
41.3. Connecting to the Embedded JBoss Messaging
41.3.1. Core API
41.3.2. JMS API
41.4. JMS Embedding Example
42. Intercepting Operations
42.1. Implementing The Interceptors
42.2. Configuring The Interceptors
42.3. Example
43. Interoperability
43.1. Stomp and StompConnect
43.2. AMQP
43.3. REST
44. Performance Tuning
44.1. Tuning the journal
44.2. Tuning JMS
44.3. Other Tunings
44.4. Tuning Transport Settings
44.5. Tuning the VM
44.6. Avoiding Anti-Patterns
45. Configuration Reference
45.1. Server Configuration
45.1.1. jbm-configuration.xml
45.1.2. jbm-jms.xml
46. Project Information