消息中间件ActiveMQ(2)--创建连接对象-阿里云开发者社区

开发者社区> 微服务> 正文

消息中间件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规范中提及的那些接口就可以完成所有的编程。它们之间的关系如下:

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); }

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
微服务
使用钉钉扫一扫加入圈子
+ 订阅

构建可靠、高效、易扩展的技术基石

其他文章