消息中间件的学习

一个码农初次学习消息中间件的经历

常见消息中间件-第一节

  • activeMQ
  • RabbitMQ
  • RocketMQ
  • kafka
    以下为三者的比较:
    三者的比较

activeMQ的学习

官网 : http://activemq.apache.org/ 下载最新版
第一种启动
进入bin ,
在这里插入图片描述根据需求选择,我的是64位,所以进去win64目录下,找到activemq.bat 启动
进入浏览器 http://127.0.0.1:8161
用户名密码默认为admin
第二种以服务启动
InstallService.bat以管理员身份运行
服务中有ActiveMQ
linux
解压压缩包
进入bin 输入 activemq start,启动完成

RocketMQ的学习

  • Windows下安装RocketMQ
  1. 官方下载地址:http://rocketmq.apache.org/dowloading/releases/

    这是目前最新版,其中红色为源码,蓝色为安装工具,下载蓝色所示的压缩包,并解压当本地安装路径
  2. 系统环境变量配置
    变量名:ROCKETMQ_HOME
    变量值:MQ解压路径\MQ文件夹名
  3. 启动
    先启动NAMESERVER
    cmd命令框执行进入至‘MQ文件夹\bin’下,然后执行‘start mqnamesrv.cmd’,启动NAMESERVER。成功后会弹出提示框,此框勿关闭
    然后启动BROKER
    cmd命令框执行进入至‘MQ文件夹\bin’下,然后执行‘start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true’,启动BROKER。成功后会弹出提示框,此框勿关闭。
  4. 关闭命令
    .\mqshutdown namesrv
    .\mqshutdown broker
  • 本地练习RocketMQ所遇到的问题及解决办法
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;

/**
 * 发送消息
 * Created by  on 2019/1/17.
 */
public class Producer {
    public static void main(String[] args) throws MQClientException, InterruptedException {
        //rocketmq的创建producer很简单只输入一个Group Name名字就可以,不向activemq那么复杂
        DefaultMQProducer producer = new DefaultMQProducer("pay_topic_01");
        //Name Server的地址,这里注意两点,一个就是nameserver的默认端口是9876,另一个就是多个nameserver集群用分号来分割
        producer.setNamesrvAddr("127.0.0.1:9876");
        producer.start();

        for (int i = 0; i < 2; i++) {
            try {
                //消息创建也很简单,第一个参数是topic,第二个就是tags(多个tag用||连接),第三个参宿是消息内容
                Message msg = new Message("TopicTest",// topic
                        "TagA",// tag
                        ("Hello RocketMQ " + i).getBytes()// body
                );
                //调用send方法就能发送成功了,不用像actimemq那样需要commit
                SendResult sendResult = producer.send(msg);
                System.out.println(sendResult);
            }
            catch (Exception e) {
                e.printStackTrace();
                Thread.sleep(1000);
            }
        }
        producer.shutdown();
    }
}

执行后报错,如下:
org.apache.rocketmq.client.exception.MQClientException: No route info of this topic
解决办法:将依赖版本修改为本地安装版本,之后运行就会成功。

<dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-client</artifactId>
            <version>4.3.3</version>
 </dependency>

运行结果如下:

SendResult [sendStatus=SEND_OK, msgId=C0A82FF1354858644D46560855F60000, offsetMsgId=C0A82FF100002A9F00000000000000B2, messageQueue=MessageQueue [topic=TopicTest, brokerName=houxia, queueId=2], queueOffset=0]

SendResult [sendStatus=SEND_OK, msgId=C0A82FF1354858644D46560856EC0001, offsetMsgId=C0A82FF100002A9F0000000000000164, messageQueue=MessageQueue [topic=TopicTest, brokerName=houxia, queueId=3], queueOffset=0]

个人发现个奇怪的事情,运行成功后将依赖修改为其他版本也可运行成功,原因目前未知。
将个人经历分享给大家,谢谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值