Chapter 5. Configuration
The Java Message Service (JMS) API specifies how a messaging client interacts with a messaging server. How messaging services such as message destinations and connection factories are defined and implemented depends on the JMS provider. JBoss Messaging has its own files for service configuration.
This chapter shows you how to configure various services available in JBoss Messaging that work together to provide JMS API-level services to client applications.
JBoss Messaging configuration is divided between several configuration files. Depending on the type of service provided, configuration information is divided between
messaging-service.xml
, remoting-bisocket-service.xml
, <your database type>-persistence-service.xml
, connection-factories-service.xml
and destinations-service.xml
. These files can all be found in the $JBOSS_HOME/server/$PROFILE/deploy/messaging
directory.
AOP interceptor stacks can be configured in
aop-messaging-client.xml
(for client-side behavior) and aop-messaging-server.xml
(for server-side behavior). There is usually no need to change these files, but some interceptors can be removed to improve performance if they are not required. Ensure that you have considered the security implications before removing the security interceptor.
5.1. Configuring the ServerPeer
The
ServerPeer
is the heart of the JBoss Messaging JMS facade. You can configure its behavior by altering $JBOSS_HOME/server/$PROFILE/deploy/messaging/messaging-service.xml
.
All JBoss Messaging services are based in the
ServerPeer
.
An example of a Server Peer configuration is presented below. Note that not all values for the server peer's attributes are specified in the example
<!-- ServerPeer MBean configuration ============================== --> <mbean code="org.jboss.jms.server.ServerPeer" name="jboss.messaging:service=ServerPeer" xmbean-dd="xmdesc/ServerPeer-xmbean.xml"> <!--The unique id of the server peer - in a cluster each node MUST have a unique value - must be an integer--> <attribute name="ServerPeerID"> ${jboss.messaging.ServerPeerID:0} </attribute> <!--The default JNDI context to use for queues when they are deployed without specifying one--> <attribute name="DefaultQueueJNDIContext">/queue</attribute> <!--The default JNDI context to use for topics when they are deployed without specifying one --> <attribute name="DefaultTopicJNDIContext">/topic</attribute> <attribute name="PostOffice"> jboss.messaging:service=PostOffice </attribute> <!-- The default Dead Letter Queue (DLQ) to use for destinations. This can be overridden on a per destinatin basis --> <attribute name="DefaultDLQ"> jboss.messaging.destination:service=Queue,name=DLQ </attribute> <!--The default maximum number of times to attempt delivery of a message before sending to the DLQ (if configured). This can be overridden on a per destination basis--> <attribute name="DefaultMaxDeliveryAttempts">10</attribute> <!--The default Expiry Queue to use for destinations. This can be overridden on a per destinatin basis--> <attribute name="DefaultExpiryQueue"> jboss.messaging.destination:service=Queue,name=ExpiryQueue </attribute> <!--The default redelivery delay to impose. This can be overridden on a per destination basis --> <attribute name="DefaultRedeliveryDelay">0</attribute> <!--The periodicity of the message counter manager enquiring on queues for statistics--> <attribute name="MessageCounterSamplePeriod">5000</attribute> <!--The maximum amount of time for a client to wait for failover to start on the server side after it has detected failure--> <attribute name="FailoverStartTimeout">60000</attribute> <!--The maximum amount of time for a client to wait for failover to complete on the server side after it has detected failure--> <attribute name="FailoverCompleteTimeout">300000</attribute> <attribute name="StrictTck">false</attribute> <!--The maximum number of days results to maintain in the message counter history--> <attribute name="DefaultMessageCounterHistoryDayLimit">-1</attribute> <!--The name of the connection factory to use for creating connections between nodes to pull messages--> <attribute name="ClusterPullConnectionFactoryName"> jboss.messaging.connectionfactory:service=ClusterPullConnectionFactory </attribute> <!--When redistributing messages in the cluster. Do we need to preserve the order of messages received by a particular consumer from a particular producer? --> <attribute name="DefaultPreserveOrdering">false</attribute> <!-- Max. time to hold previously delivered messages back waiting for clients to reconnect after failover --> <attribute name="RecoverDeliveriesTimeout">300000</attribute> <!-- Set to true to enable message counters that can be viewed via JMX --> <attribute name="EnableMessageCounters">false</attribute> <!-- The password used by the message sucker connections to create connections. THIS SHOULD ALWAYS BE CHANGED AT INSTALL TIME TO SECURE SYSTEM <attribute name="SuckerPassword"></attribute> --> <!-- The name of the server aspects configuration resource <attribute name="ServerAopConfig">aop/jboss-aop-messaging-server.xml</attribute> --> <!-- The name of the client aspects configuration resource <attribute name="ClientAopConfig">aop/jboss-aop-messaging-client.xml</attribute> --> <depends optional-attribute-name="PersistenceManager"> jboss.messaging:service=PersistenceManager </depends> <depends optional-attribute-name="JMSUserManager"> jboss.messaging:service=JMSUserManager </depends> <depends>jboss.messaging:service=Connector,transport=bisocket</depends> <depends optional-attribute-name="SecurityStore" proxy-type="org.jboss.jms.server.SecurityStore"> jboss.messaging:service=SecurityStore </depends> </mbean>