您的位置:首页 > 编程语言 > Java开发

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

2017-06-27 10:58 549 查看
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() {

@Override
public 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  activemq 文档 java Apache