ActiveMQ简单使用介绍(一):未整合Spring情况下的介绍使用

来源:互联网 发布:tomcat 域名绑定 端口 编辑:程序博客网 时间:2024/06/04 20:12

ActiveMQ简单使用(一):整合Spring

在进行数据查询的时候,都会遇到一个问题:当查询的数据量过大,相同数据查询频次过多的时候,都会选择将其加入到缓存或者索引中,提高查询效率.

但是作为实际生产环境中,都会有一个后台的管理,进行相关数据的CRUD操作.如何保证后台CRUD操作能即时的将数据添加到相应的缓存或者索引库中呢,使用ActiveMQ就是一个比较合适的一个选择.

在进行ActiveMQ的相应使用的时候,我们需要先明白它的消息形式,分为:消息传递的类型;消息正文格式.下图就是其分类形式:

图上的各个参数的解释应该还是比较容易理解的,这个是从我自己写的xmind文档上截图的.

在使用的时候,针对不同的需求.可以进行相关的选择.对于五中消息正文格式,还是TextMessage这种消息正文格式使用的居多,各位按需选择即可.

在了解了其消息形式后,我们就进行下一步的使用.关于安装,在这里就不怎么介绍了,各位自行百度.

对了,在这里有个要说下,ActiveMQ是自带一个后台管理的,url:http://IP:8161/admin,这里的IP是安装了ActiveMQ的那台服务器的IP地址,port默认的是8161.各位可以自己进入进行相关的查看了解.

接下来,我们进入正题,ActiveMQ在JAVA中的使用:

我们在进行ActiveMQ的使用的时候,会有两个角色需要明白:Producer和Customer.

这个根据字面的意思也很好理解,一个是生产者,创建相应的ActiveMQ,以及需要传递的相关数据;一个是消费者,接收Producer传递的相关数据并进行相关的处理.

在进行Producer和Customer的相关书写的时候,可能初步看起来有点繁琐,代码量有点多,无从下手.但是其逻辑很清晰,按照其逻辑一步一步下去就行,而且都是固定代码.需要修改的地方其实是很少的.主要逻辑如下:

Producer:

1.创建ConnectionFactory对象,指明ip以及端口号,采用的是tcp协议,port为61616

2.使用ConnectionFactory对象创建Connection对象

3.开启连接,使用Connection对象的start方法

4.使用Connection对象创建Session对象

5.使用Session对象创建Destination对象(Topic或者Queue),需要指定一个列队的名称

6.使用Session对象创建Producer对象

7.使用Session对象创建TextMessage对象,传递要你发送的内容

8.使用Producer对象发送消息

9.关闭资源


代码如下:

public void testQueueProduct() throws Exception{//1.创建ConnectionFactory对象,指定服务器的IP以及端口号,这个走的是TCP协议,因此是TCP开头ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://IP:61616");//2.使用ConnectionFactory对象创建一个Connection对象Connection connection = connectionFactory.createConnection();//3.开启连接,使用start方法connection.start();//4.使用Connection对象创建一个Session对象//第一个参数:是否开启事务.true,开启事务,第二个参数忽略//第二个参数:当第一个参数为false的时候,第二个参数才有意义.消息的应答模式:1.自动应答,2.手动应答.一般是自动应答Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.使用Session创建Destination对象.这里明明要创建Destination对象,为什么创建的是Queue呢:因为Destination是Topic和Queue的父类!!!//参数:队列的名称Queue queue = session.createQueue("test_queue");//6.使用Session创建一个Producer对象MessageProducer messageProducer = session.createProducer(queue);//7.使用Session对象创建一个TextMessage对象TextMessage textMessage = session.createTextMessage("hello activeMQ.this is my first test");//8.使用MessageProducer发送消息messageProducer.send(textMessage);//9.关闭资源messageProducer.close();session.close();connection.close();}

Customer:

1.创建ConnectionFactory对象,指明ip以及端口号,采用的是tcp协议,port为61616

2.使用ConnectionFactory对象创建Connection对象

3.开启连接,使用Connection对象的start方法

4.使用Connection对象创建Session对象

5.使用Session对象创建Destination对象(Topic或者Queue),需要指定一个列队的名称

6.使用Session对象创建Consumer对象

7.接收消息,使用Consumer对象,setMessageListener方法,这里有个匿名内部类

8.打印消息

9.关闭资源


代码如下:

public void testQueueConsumer() throws Exception{//1.创建ConnectionFactory对象ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://IP:61616");//2.使用ConnectionFactory对象创建Connection对象Connection connection = connectionFactory.createConnection();//3.开启连接connection.start();//4.使用Connection对象创建Session对象Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.使用Session对象创建一个Destination对象,此处创建的是Queue,列队名称要保证一致!!Queue queue = session.createQueue("test_queue");//6.使用Session对象创建Consumer对象MessageConsumer messageConsumer = session.createConsumer(queue);//7.接收消息,使用Consumer对象进行创建,使用setMessageListener方法,这里有个匿名内部类messageConsumer.setMessageListener(new MessageListener() {@Overridepublic void onMessage(Message message) {try {TextMessage textMessage = (TextMessage) message;//取消息的内容String text = textMessage.getText();//8.打印消息System.out.println(text);} catch (Exception e) {e.printStackTrace();}}});System.in.read();//9.关闭资源messageConsumer.close();session.close();connection.close();}
大家应该可以看出,虽然原生态的代码看起来有点多,但是很多都是固定的,只需要修改部分参数就能使用,按照逻辑一步步往下,其实还是挺简单的.各个注意的事项在代码的注释上都有详细的解释,各位多看看注释就应该没什么问题.

关于原生态的ActiveMQ就讲到这里了.


ActiveMQ简单使用(一):整合Spring