消息中間件ActiveMQ(2)--創建連接對象
博學,切問,近思--詹子知 (https://jameszhan.github.io)
1.直接使用應用程序創建。
public static void main(String[] args) throws JMSException { String uri = "tcp://tcp://localhost:61616"; // 創建連接工廠。 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(uri); //創建連接對象。 Connection connection = connectionFactory.createConnection(); //創建Queue對象 Destination queue = new ActiveMQQueue("Queue"); //創建Topic對象 Destination topic = new ActiveMQTopic("Topic"); }
2.Use Jndi 配置。
使用JNDI配置可以屏蔽具體的實現細節,可以不用修改代碼就可以實現在不同消息中間消息件產品之間的切換。一般情況下,我們隻要使用JMS規範中提及的那些接口就可以完成所有的編程。它們之間的關係如下:
本例介紹ActiveMQ提供的默認的JNDI的支持。java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory java.naming.provider.url=tcp://localhost:61616 //username java.naming.security.principal= //password java.naming.security.credentials= connectionFactoryNames=con1,con2 queue.MyQueue=MyQueue topic.MyTopic=MyTopic
本例中,配置了兩個連接工廠con1,con2,一個Queue對象MyQueue,一個Topic對象MyTopic。
import java.io.IOException; import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import org.apache.log4j.Logger; public class JndiFactory { private static final Logger LOGGER = Logger.getLogger(JndiFactory.class); protected Context context = null; public void initalize() throws NamingException { Properties props = new Properties(); try{ props.load(this.getClass().getResourceAsStream("jndi.properties")); }catch(IOException ex){ LOGGER.error("Can't load jndi.properties.", ex); } context = new InitialContext(props); } public Context getJndiContext() throws NamingException { if(context == null){ initalize(); } return context; } }
使用JNDI拿到連接對象以及其他資源。
public static void main(String[] args) throws NamingException, JMSException { JndiFactory factory = new JndiFactory(); Context ctx = factory.getJndiContext(); //獲取連接工廠。 ConnectionFactory factory1 = (ConnectionFactory) ctx.lookup("con1"); ConnectionFactory factory2 = (ConnectionFactory) ctx.lookup("con2"); //創建連接對象 Connection conn = factory1.createConnection(); //獲取Queue對象。 Destination queue = (Queue) ctx.lookup("MyQueue"); //獲取Topic對象。 Destination topic = (Topic) ctx.lookup("MyTopic"); System.out.println(conn); System.out.println(queue); System.out.println(topic); }
最後更新:2017-04-02 04:01:42