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
Update:
For JBoss AS 6.x see this FAQ for more details on how to configure JMS queue/topics
7 comments:
Hi,
Thanks for the information..............
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.
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?
How to register the listener to dynamically created queue?
thanks for the help ...it worked for me...
Hi,
Thanks for your Info....
I have some problem related this topic.
I m trying to create new Topic/Queue at run time in JMS.
Using your code as reference, but there is Exception like javax.management.InstanceNotFoundException
Here is my code...
String sTopic = "navnathTopic";
String type = "Topic";
String createType = "createTopic";
String jbossPackage = "jboss.mq";
String service = "service";
MBeanServer server = (MBeanServer) javax.management.MBeanServerFactory.findMBeanServer(
null).iterator().next();
javax.management.ObjectName factoryTopic = new javax.management.ObjectName(jbossPackage, service,
type + "/"+ sTopic);
server.invoke(factoryTopic, createType, new Object[] { sTopic },
new String[] { "java.lang.String" });
Any suggestions..... where I m wrong
Hi,
This is Navnath. I had try your code and it's working fine. Prob was used ObjectName which is not present. Now I can create queue at run time. Now the problem is to bind that queue with existing Listener.
Please suggest me how do I do?
Post a Comment