通讯流程图

首先是Server端的开发及设置:
1、增加一个用户:
bin\add-user.bat
用户名密码随便,但要属于guest组
2、启动Server
standalone.bat -server-config=standalone-full.xml
3、新建Topic
jboss-cli.bat --connect jms-topic add --topic-address=jmsTopic --entries=topic/jmsTopic,java:jboss/exported/jms/topic/jmsTopic
到这里服务端已经完成了。
然后是客户端的设置:
1、Publisher
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 TestTopicPublisher {
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);
TopicConnectionFactory factory = (TopicConnectionFactory) ctx.lookup("jms/RemoteConnectionFactory");
TopicConnection connection = factory.createTopicConnection("user001", "user001#");
TopicSession session = connection.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);
Topic topic = (Topic) ctx.lookup("jms/topic/jmsTopic");
TextMessage msg = session.createTextMessage("Topic Test Message");
TopicPublisher publisher = session.createPublisher(topic);
publisher.publish(msg);
session.close();
connection.close();
}
}
2、Subscriber
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 TestTopicSubscriber {
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);
TopicConnectionFactory factory = (TopicConnectionFactory) ctx.lookup("jms/RemoteConnectionFactory");
TopicConnection connection = factory.createTopicConnection("user001", "user001#");
TopicSession session = connection.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);
Topic topic = (Topic) ctx.lookup("jms/topic/jmsTopic");
TopicSubscriber subscriber = session.createSubscriber(topic);
subscriber.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
try {
TextMessage msg = (TextMessage) message;
System.out.println("Topic message received:" + msg.getText());
} catch (JMSException e) {
System.out.println(e);
}
}
});
connection.start();
System.in.read();
session.close();
connection.close();
}
}