ActiveMQ笔记53-ActiveMQ消息持久化机制之JDBC配置MySQL-中

新建了activemq的数据库后,如果配置都正确,那么重启ActiveMQ服务的时候,会自动新建3张表:activemq_msgs,activemq_acks,activemq_lock。

在192.168.0.1044这台机器的mysql上,先允许远程访问,我用的是MySQL 8.0.18,在Navicat中执行下面命令。

use mysql; -- 切换到mysql数据库
select user,host from user; -- 查看当前的配置
update user set host='%' where user='root'; -- 授权root用户所有ip的访问权限
flush privileges; -- 刷新
select user,host from user; -- 查看当前的配置

可以看到root用户的host变成了%,此时任意ip都可以用root进行远程访问了。

启动ActiveMQ服务,启动过程中,如果报错,就去data目录下,查看activemq.log启动日志,里面会告诉你启动报错的原因。

启动不成功可能的原因,依次检查一下:

  1. 虚拟机和实体机是否互相ping通,不能ping通可能是防火墙问题。
  2. 实体机上的mysql是不是支持远程访问。
  3. mysql的地址是否正确,是否有activemq这个数据库(高版本需要加一个serverTimezone=UTC参数,用&连接)。
  4. 如果还是不行,就去data目录下,看activemq.log启动日志。、

启动成功后,在activemq数据库下,可以看到多出来3张表。

activemq_msgs(消息表):

ID自增的数据库主键
CONTAINER消息的Destination
MSGID_PROD消息发送者的主键
MSG_SEQ

发送消息的顺序,MSGID_PROD+MSG_SEQ可以组成JMS的MessageID

EXPIRATION消息的过期时间,存储的从1970-01-01到现在的毫秒数
MSG消息本题的Java序列化对象的二进制数据
PRIORITY优先级,从0-9,数值越大优先级越高

activemq_acks(订阅关系表,针对于持久化的Topic,订阅者和服务器的订阅关系会保存在这个表中):

CONTAINER消息的Destination
SUB_DESK如果使用的Static集群,这个字段会有集群其他系统的信息
CLIENT_ID每个订阅者必须有一个唯一的客户端ID用以区分
SUB_NAME订阅者名称
SELECTOR选择器,可以选择只消费满足条件的消息。条件可以用自定义属性来实现,可支持多属性AND和OR操作
LAST_ACKED_ID记录消费过的消息ID

activemq_lock:

在集群环境中才有用,只有一个Broker可以获取消息,称为Master Broker,其他的只能作为备份等待Master Broker不可用,才可能成为下一个Master Broker。这个表用来记录哪个Broker是当前的Master Broker。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值