通讯流程图
首先是Server端的开发及设置:
1、增加一个用户:
bin\add-user.bat
用户名密码随便,但要属于guest组
2、启动Server
standalone.bat -server-config=standalone-full.xml
3、新建Queue
jboss-cli.bat --connect jms-queue add --queue-address=jmsQueue --entries=queue/jmsQueue,java:jboss/exported/jms/queue/jmsQueue
到这里服务端已经完成了。
然后是客户端的设置:
1、Sender
package com.neohope.jms.test; import javax.jms.*; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import java.util.Hashtable; /** * Created by Hansen */ public class TestQueueSender { public static void main(String[] args) throws NamingException, JMSException { final Hashtable jndiProperties = new Hashtable(); jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); jndiProperties.put(Context.PROVIDER_URL, "remote://localhost:4447"); final InitialContext ctx = new InitialContext(jndiProperties); QueueConnectionFactory factory = (QueueConnectionFactory) ctx.lookup("jms/RemoteConnectionFactory"); QueueConnection connection = factory.createQueueConnection("user001", "user001#"); QueueSession session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE); Queue queue = (Queue) ctx.lookup("jms/queue/jmsQueue"); TextMessage msg = session.createTextMessage("Queue Test Messagee"); QueueSender sender = session.createSender(queue); sender.send(msg); session.close(); connection.close(); } }
2、Receiver
package com.neohope.jms.test; import javax.jms.*; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import java.io.IOException; import java.util.Hashtable; /** * Created by Hansen */ public class TestQueueReceiver { public static void main(String[] args) throws NamingException, JMSException, IOException { final Hashtable jndiProperties = new Hashtable(); jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); jndiProperties.put(Context.PROVIDER_URL, "remote://localhost:4447"); final InitialContext ctx = new InitialContext(jndiProperties); QueueConnectionFactory factory = (QueueConnectionFactory) ctx.lookup("jms/RemoteConnectionFactory"); QueueConnection connection = factory.createQueueConnection("user001", "user001#"); QueueSession session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE); Queue queue = (Queue) ctx.lookup("jms/queue/jmsQueue"); QueueReceiver receiver = session.createReceiver(queue); receiver.setMessageListener(new MessageListener() { public void onMessage(Message message) { try{ TextMessage msg=(TextMessage)message; System.out.println("Queue message received:"+msg.getText()); } catch(JMSException e) { System.out.println(e); } }}); connection.start(); System.in.read(); session.close(); connection.close(); } }