简介
ActiveMQ
是开源的JMS实现,Geronimo应用服务器就是使用的ActiveMQ提供JMS服务。ActiveMQ5.0相比以前版本提供了一些非常有用的新
功能:
- AMQ Message Store (Faster Persistence!)
- Cursors (To handle very large number of stored messages)
- Blob Messages
- Command Agent
- Enterprise Integration Patterns via Camel Integration
- Logging a warning if you forget to start a Connection
- Message Transformation
- Mirrored Queues
- Flow Control
鉴于目前关于ActiveMQ5.0的文章比较少,故准备写一系列ActiveMQ的使用方面的文章。本篇先从安装开始。
安装
- 在http://activemq.apache.org/download.html
下
载5.0.0发行包,解压到需要安装ActiveMQ的文件夹,记为/path/to/activemq。
- unix环境activemq文件夹需要执行权限,执行如下命令 chmod
-R 755 /path/to/activemq
启动
- window环境运行/path/to/activemq/bin/activemq.bat
- unix环境运行/path/to/activemq/bin/activemq
测试
ActiveMQ默认使用的TCP连接端口是61616, 通过查看该端口的信息可以测试ActiveMQ是否成功启动
- window环境运行 netstat -an|find "61616"
- unix环境运行netstat -an|grep 61616
监控
ActiveMQ5.0版本默认启动时,启动了内置的jetty服务器,提供一个demo应用和用于监控ActiveMQ的admin应用。
admin:http://127.0.0.1:8161/admin/
demo:http://127.0.0.1:8161/demo/
点击demo应用中的“ Market data publisher
”,就会发一
些测试的消息。转到admin页面的topics menu下面(queue和topic的区别见 http://andyao.javaeye.com/blog/153173
),可以看到消息在增长。
配置
ActiveMQ5.0的配置文件在/path/to/activemq/conf目录下面。主要配置文件为activemq.xml,具体的配置
将在后续文章中详细说明。
-------------------------------------------****************************************************************
持久化时不能对自定义类型的对象进行保存,看是不是你的messageConverter有问题?你的消息类型是POJO吗?
MessageConverter如下
-
public
class
DefaultMessageConverter
implements
MessageConverter{
-
-
-
-
private
static
final
Loglog=LogFactory.getLog(DefaultMessageConverter.
class
);
-
-
public
MessagetoMessage(Objectobj,Sessionsession)
throws
JMSException{
-
if
(log.isDebugEnabled()){
-
log.debug(
"toMessage(Object,Session)-start"
);
-
}
-
-
-
ActiveMQObjectMessageobjMsg=(ActiveMQObjectMessage)session.createObjectMessage();
-
HashMap<String,
byte
[]>map=
new
HashMap<String,
byte
[]>();
-
try
{
-
-
ByteArrayOutputStreambos=
new
ByteArrayOutputStream();
-
ObjectOutputStreamoos=
new
ObjectOutputStream(bos);
-
oos.writeObject(obj);
-
map.put(
"POJO"
,bos.toByteArray());
-
objMsg.setObjectProperty(
"Map"
,map);
-
-
}
catch
(IOExceptione){
-
log.error(
"toMessage(Object,Session)"
,e);
-
}
-
return
objMsg;
-
}
-
-
public
ObjectfromMessage(Messagemsg)
throws
JMSException{
-
if
(log.isDebugEnabled()){
-
log.debug(
"fromMessage(Message)-start"
);
-
}
-
-
if
(msg
instanceof
ObjectMessage){
-
HashMap<String,
byte
[]>map=(HashMap<String,
byte
[]>)((ObjectMessage)msg).getObjectProperty(
"Map"
);
-
try
{
-
-
ByteArrayInputStreambis=
new
ByteArrayInputStream(map.get(
"POJO"
));
-
ObjectInputStreamois=
new
ObjectInputStream(bis);
-
ObjectreturnObject=ois.readObject();
-
return
returnObject;
-
}
catch
(IOExceptione){
-
log.error(
"fromMessage(Message)"
,e);
-
-
}
catch
(ClassNotFoundExceptione){
-
log.error(
"fromMessage(Message)"
,e);
-
}
-
-
return
null
;
-
}
else
{
-
throw
new
JMSException(
"Msg:["
+msg+
"]isnotMap"
);
-
}
-
}
-
}
分享到:
相关推荐
最新的activemq版本,刚开始写jms,希望大家都能用到
博文链接:https://cddcdd.iteye.com/blog/170685
该资源是spring与activemq的基础整合,适合消息中间件的初学者
ActiveMQ5.13 安装与配置
linux下activemq安装包和配置文档
ActiveMQ安装及配置文档介绍了ActiveMQ的安装过程和配置。让新手踏入JMS的门槛。
Linux下,图解ActiveMQ 5.12.1 安装与配置
CentOS7安装ActiveMQ
ActiveMQ5.0 的二进制发布包中bin目录中包含一个名为activemq的脚本,直接运行这个脚本就可以启动一个broker。
activemq服务器使用的zookeeper replicable 的方式进行负载均衡以及容灾,客户端使用spring进行配置
NULL 博文链接:https://gong1208.iteye.com/blog/1555582
NULL 博文链接:https://jackyin5918.iteye.com/blog/2003358
用于ACtiveMq 配置插件配置使用,配置介绍等,适合初学者
使用Camel配置ActiveMQ路由的实践方式
activemq 配置的相关文档,助你完善activeMQ的配置
JDK Tomcat ActiveMQ 安装环境配置详细说明
activemq 配置说明与activemq入门讲解
spring activeMQ demo 配置