Thursday, August 24, 2006

How to create a Queue/Topic in JBoss?


Queues/Topics are known as administered objects and in jboss they can be deployed through ServiceDotXml files. Let’s name our file, myapp-destination-service.xml. The contents of the file should look like:


<?xml version="1.0" encoding="UTF-8"?>

<server>
<!--My queue, named: myAppQueue -->
<mbean code="org.jboss.mq.server.jmx.Queue"
name="jboss.mq.destination:service=Queue,name=myAppQueue">
<depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
</mbean>
<!-- My topic, named: myAppTopic -->
<mbean code="org.jboss.mq.server.jmx.Topic"
name="jboss.mq.destination:service=Topic,name=myAppTopic">
<depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
</mbean>

</server>




Place this file in your %JBOSS_HOME%/server/default/deploy directory and start the server.
(Note: If you are using the ‘all’ configuration or the ‘minimal’ configuration then you will have to place this file in the %JBOSS_HOME%/server/all/deploy or %JBOSS_HOME%/server/minimal/deploy directory, as appropriate).

The above queue/topic will be bound to the jndi name: queue/myAppQueue and topic/myAppTopic respectively.

Note:

1) The above file is meant for JBoss-3.2.3. Though there might be slight changes to later versions of JBoss, the basic configuration mechanism remains the same.

2) JBoss also comes with preconfigured queues/topics. These configurations can be found in the jbossmq-destinations-service.xml file which is present in %JBOSS_HOME%/server/default/deploy/jms directory

3 comments:

T.RamMohanReddy said...

Hi,

Thanks for the information..............

Anonymous said...

A mode I discovered to make topic at runtime is contained in the following code:

MBeanServer server = (MBeanServer) MBeanServerFactory.findMBeanServer(null).iterator().next();
ObjectName factoryTopic = new ObjectName("jboss.mq", "service", "DestinationManager");
String sTopic = "TopicName";
ObjectName o = new ObjectName("jboss.mq.destination", "name", "Topic/"+sTopic);
server.invoke(factoryTopic,"createTopic",new Object[] { sTopic },new String[]{ "java.lang.String" } );

You MUST add Exception management and insert into a MBean java class.

Sanjeev said...

I am new to JBOSS and need some spoonfeednig on configuring queues and topics, but not we are using MQ, we are using EJBs for handling messages. So, I am wondering why you arereferring classes present in 'mq' packages?