消息中间件ActiveMQ(2)--创建连接对象

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

博学,切问,近思--詹子知 (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); }

目录
相关文章
|
1月前
|
消息中间件 存储 负载均衡
Kafka【付诸实践 01】生产者发送消息的过程描述及设计+创建生产者并发送消息(同步、异步)+自定义分区器+自定义序列化器+生产者其他属性说明(实例源码粘贴可用)【一篇学会使用Kafka生产者】
【2月更文挑战第21天】Kafka【付诸实践 01】生产者发送消息的过程描述及设计+创建生产者并发送消息(同步、异步)+自定义分区器+自定义序列化器+生产者其他属性说明(实例源码粘贴可用)【一篇学会使用Kafka生产者】
128 4
|
7月前
|
消息中间件 存储 监控
【图解RabbitMQ-3】消息队列RabbitMQ介绍及核心流程
【图解RabbitMQ-3】消息队列RabbitMQ介绍及核心流程
189 0
|
9天前
|
消息中间件 Java BI
RabbitMQ的四种消息传递模式与演示代码
RabbitMQ的四种消息传递模式与演示代码
26 0
|
1月前
|
消息中间件 存储 中间件
【SpringCloud Stream消息驱动、设计思想以及整合rabbitmq消息队列案例--学习笔记】
【SpringCloud Stream消息驱动、设计思想以及整合rabbitmq消息队列案例--学习笔记】
46 0
|
5月前
|
消息中间件 Java Maven
消息中间件系列教程(07) -RabbitMQ -案例代码(点对点队列模式)
消息中间件系列教程(07) -RabbitMQ -案例代码(点对点队列模式)
35 1
|
5月前
|
消息中间件 存储 缓存
消息中间件系列教程(06) -RabbitMQ -五种队列形式
消息中间件系列教程(06) -RabbitMQ -五种队列形式
61 1
|
3月前
|
消息中间件 存储 Java
RabbitMQ是如何实现消息传递的?
RabbitMQ是如何实现消息传递的?
41 0
|
3月前
|
消息中间件 存储 负载均衡
ActiveMQ持久订阅设置
ActiveMQ持久订阅设置
|
8月前
|
消息中间件 存储 微服务
RPC 和消息队列的区别
RPC 和消息队列的区别
177 0
|
消息中间件 存储 安全
RabbitMQ学习笔记(一)----RabbitMQ的基本概念以及5种队列模式
今天开始学习消息中间件,根据项目需求,目前选择的消息中间件是RabbitMQ。让我们一起来认识下RabbitMQ吧。
278 0
RabbitMQ学习笔记(一)----RabbitMQ的基本概念以及5种队列模式