读书人

JBoss 系列6:JBoss 7/WildFly中配置使

发布时间: 2013-10-08 17:12:09 作者: rapoo

JBoss 系列六:JBoss 7/WildFly中配置使用JMS消息队列
内容概要

JBoss 系列六主要目的是演示如何在JBoss 7/WildFly中配置使用JMS消息队列,本文章分三部分:在JBoss服务器上创建消息队列,在JBoss服务器上创建安全Application User,使用创建好的消息队列。如下为一简单示意图:

JBoss 系列6:JBoss 7/WildFly中配置使用JMS消息队列

如上图,“jms/queue/test”为JBoss服务器上创建的消息队列;Producer和Consumer连接JBoss服务器需要安全认证;Producer将消息发送到消息队列“jms/queue/test”,Consumer从消息队列“jms/queue/test”中接收消息。

在JBoss服务器上创建消息队列

我们可以使用如下4种方式创建消息队列:

Management ConsoleManagement CLI部署*-jms.xml 文件到 deployments目录编辑JBoss配置文件使用Management Console创建消息队列

1. 启动具有消息功能的JBoss,即启动JBoss时使用-c 或 --server-config= 指向JBoss的配置文件standalone-full.xml

import java.util.Properties;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.MessageConsumer;import javax.jms.MessageProducer;import javax.jms.Session;import javax.jms.TextMessage;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;public class HelloWorlsJMS {private Context getContext() throws NamingException{ final Properties env = new Properties();                 env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");                 env.put(Context.PROVIDER_URL, "remote://localhost:4447");                 env.put(Context.SECURITY_PRINCIPAL, "kylin");                 env.put(Context.SECURITY_CREDENTIALS, "redhat");return new InitialContext(env);}public void test() throws Exception {System.out.println("JMS HelloWorld start");Context ctx = getContext();System.out.println("Create Local JNDI Context Successful");ConnectionFactory connectionFactory = null;        Connection connection = null;        Session session = null;        MessageProducer producer = null;        MessageConsumer consumer = null;        Destination destination = null;        TextMessage message = null;try {String connectionFactoryString = "jms/RemoteConnectionFactory";System.out.println("Attempting to acquire connection factory \"" + connectionFactoryString + "\"");connectionFactory = (ConnectionFactory) ctx.lookup(connectionFactoryString);System.out.println("Found connection factory \"" + connectionFactoryString + "\" in JNDI");String destinationString = "jms/queue/test";System.out.println("Attempting to acquire destination \"" + destinationString + "\"");            destination = (Destination) ctx.lookup(destinationString);            System.out.println("Found destination \"" + destinationString + "\" in JNDI");                        // Create the JMS connection, session, producer, and consumer            connection = connectionFactory.createConnection("kylin", "redhat");            System.out.println("create Connection Factory successful");            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);            producer = session.createProducer(destination);            System.out.println("create producer successful");            consumer = session.createConsumer(destination);            System.out.println("create consumer successful");            connection.start();                        int count = 3;            String content = "Hello World, JMS!";            System.out.println("Sending " + count + " messages with content: " + content);                        // Send the specified number of messages            for (int i = 0; i < count; i++) {                message = session.createTextMessage(content);                producer.send(message);            }            // Then receive the same number of messaes that were sent            for (int i = 0; i < count; i++) {                message = (TextMessage) consumer.receive(5000);                System.out.println("Received message " + (i + 1) + " with content [" + message.getText() + "]");            }} catch (Exception e) {throw e;} finally {            // closing the connection takes care of the session, producer, and consumer            if (connection != null) {                connection.close();            }        }}public static void main(String[] args) throws Exception {new HelloWorlsJMS().test();}}




读书人网 >操作系统

热点推荐