activeMQ基础知识

一、   应用场景

用于解耦系统,解决高并发系统反应慢。

二、   模式

1. 点对点(queue)

特性:

l  生产者发送的消息只能被一个消费者消费。

l  消息设置为持久性存储,如果生产者发送消息时消费者不在线,那么无论activeMQ服务器是否重启过,消费者上线时都会接收到缓存中的消息。

消息设置为非持久性存储,如果生产者发送消息时消费者不在线,如果activeMQ服务器没有重启则消费者上线时可以接收到缓存在内存中的消息;如果activeMQ服务器重启过,则消费者接收不到消息。

2. 发布-订阅(topic)

特性:

l  发布订阅模式规定生产者发送的消息可被多个消费者消费。

l  如果生产者发送消息时消费者不在线,当消费者上线时也接收不到消息。

三、   消息类型

根据 JSR 914: JavaTM Message Service (JMS) API ,JMS规范中的消息类型包括TextMessage、BytesMessage、MapMessage、StreamMessage和ObjectMessage 等五种。

l  TextMessage

将字符串存放在消息体内。

//设置
TextMessage message = session.createTextMessage();
message.setText("字符串消息");
//读取
message.getText();

 l  BytesMessage

将字节存放在消息体内。

//设置
byte[] data;
BytesMessage msg = session.createBytesMessage();
msg.wirte(data);
//读取
byte[] msgData = new byte[256];
int bytesRead = msg.readBytes(msgData);

 l  MapMessage

//设置
MapMessage msg = session.createMapMessage();
msg.setString(“CUSTOMER_NAME”,”John”);
msg.setInt(“CUSTOMER_AGE”,12);
//读取
String s = msg.getString(“CUSTOMER_NAME”);
int age = msg.getInt(“CUSTOMER_AGE”);

 l  StreamMessage

//设置
StreamMessage msg = session.createStreamMessage();
msg.writeString(“John”);
msg.writeInt(12);
//读取
String s = msg.readString();
Int age = msg.readInt();

 l  ObjectMessage 

传入可序列化的对象。

四、   持久化存储

1. 持久化为文件

activeMQ默认持久化到文件中

2. 持久化到mysql

l  配置config/activemq.xml文件

在”broker”节点后添加mysql数据源配置

<bean id="mysqlDataSource" class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  <property name="url" value="jdbc:mysql://127.0.0.1:3306/activemq?relaxAutoCommit=true"/>
  <property name="username" value="root"/>
  <property name="password" value="root"/>   <property name="poolPreparedStatements" value="true"/>
</bean>

将默认持久化配置注释掉,添加mysql配置

<!--<persistenceAdapter>
  <kahaDB directory="${activemq.data}/kahadb"/> </persistenceAdapter>
-->
<persistenceAdapter>
  <jdbcPersistenceAdapter dataSource="#mysqlDataSource"/> </persistenceAdapter>

l  将mysql的驱动jar包以及相关连接池的jar包放在lib目录下

l  重新启动activemq,然后数据库中会自动建立三张表,其中activemq_msgs存储离线消息。

 

转载于:https://www.cnblogs.com/guozhichao/p/5809542.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值