1、 软件准备,mq、was均安装完毕,此处使用的是mq60,WAS61,最好先安装mq,再安装was
2、 Was配置。
a) 资源》jms》队列连接工厂,选择节点,新建一个队列连接工厂即可。注意在组件和容器管理认证别名处选择mq的认证方式,若mq没有设置远程认证,此处选“无”,传输类型注意选择“client”,CCSID设置和MQ队列管理器一致
b) 资源》jms》队列,选择节点,新建一个队列。根据要求填入相应的值即可。
3、 代码RabbitMQ, Kafka, rocketMQ等数据可以百度查到
QMQ的开发者又谈到QMQ的性能和rocket的性能处于同一个数量级
Kafka和RocketMQ都是基于partition的存储模型, 也就是每一个subject分成一个或者多个partition, 同时consumer消费的时候也是和partition一一对应的
如下 :
在这种设计的模式下, 如果consumer数目大于partition的数据, 就会出现consumer处于空闲的状态
如果partition数据大于consumer的数据就会出现部分consumer繁忙的状况
以上是用基于partition去做负载均衡所带来的问题 由于这种静态绑定的关系, 如果遇到了消费速度更不上消费的速度, 单单的增加consumer是不够的 需要增加partition 尤其是在kafka里, partition是一个比较重的资源, 增加太多的partition还需要考虑集群的处理能力; 同时当高峰期过了之后, 如果想缩容consumer也是比较麻烦的, 因为partition只能增加, 不能减少
上述设计, 同时带了另一个问题, 就是如果有消息积压, 我们增加partition也是没有用的, 因为消费已经挤压到已存在的partition中, 新增partition只能够消费新分配过来的数据
以上是QMQ的存储模型, 方框上方的数字代表该方框自己在log中的偏移量, 方框中的数据代表该项的内容 如何message log上方的3,6,9表示这几条消息在message log中的偏移量 而consume log中方框内的数据3,6,9,20对应着message log的偏移, 表示这几条消息都在topic1中, consume log 方框上方的1,2,3,4代表这几个方框在consume log中的逻辑偏移 下面的pull log 方框中的1,2,3,4对应着consume log的逻辑偏移, 而pull log方框外的数字表示pull log的逻辑偏移
message log 是所有消息的主存储体, 所有topic的消息都进入该log
consume log 存储的是message log的索引
pull log 每个consumer拉取消息的时候会产生pull log, pull log 记录的是拉取消息在consume log中的sequence
这个时候消费者就可以使用pull log上的sequence来表示消费的进度, 这样一来我们就解耦了consumer和partition之间的耦合关系 两者可以任意扩展
分片 + 复制
QMQ不是基于partition的, 可以通过增加更多的机器提高一个topic的可用性 消息按照一定的负载均衡策略, 分配到不同的机器上, 某台机器离线之后, producer将不再将消息发送到server
QMQ通过主从复制来提高单机高可用 QMQ将服务器划分为过个group, 每一个group都包含多个master和slave, 消息的发送和消费全部指向master, slave只保证可用性
一般的消息分为At Most Once, At Least Once, Exactly once 而最后一种属于我们最期望的一种模型, 同时这种模型的实现也不容易 由于网络和应用依赖的复杂性, Exactly once基本不可行, 但是我们可以通过幂等处理来实现最终的Exactly once
QMQ中用到的HashWheelTimer是采用Netty得HashWheelTimer实现的。
如上面的这个图, 假设时间轮大小为8(这个轮子底层用了一个数组实现的) 1s转动一格, 每一格指向一个链表, 这个链表保存着待执行的任务(TimeOutTask)
参考 :
>服务器连接通道就是给MQ客户端连接进来的一个标识入口,它和其他通道不一样,它是不需要启动的,如果有MQ客户端成功地通过这个服务器连接通道连接进来,它的状态就是活动的了其他的通道类型可能需要执行启动命令来变成活动,这种通道活动以后,有一个真实的通道进程启动起来,服务器连接通道是没有相应的通道进程的打开您的mq安装目录
请看下图 如下图所示
进入conf文件夹
请看下图 如下图所示
您将看到activemqxml的配置文件
请看下图 如下图所示
打开activemqxml的配置文件
请看下图 如下图所示
查找transportConnectors
请看下图 如下图所示
找到name="openwire" uri="tcp://0
请看下图 如下图所示
在:后面写上您所需的端口号
就可以修改成您想要的端口号了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)