RocketMQ-单机版安装及远程连接测试

发布时间:2018-05-10 11:06,

浏览次数:1163

, 标签:

RocketMQ

安装需要

jdk 1.8

centos 7

rocketmq 4.2.0

因为我是在阿里云ECS上安装的,所以centos就不用说了,jdk的安装,如果没有安装可以看这篇文章:CentOS配置JAVA_HOME

,下面就开始正式的安装过程了。

安装步骤

1. 下载rocketmq 4.2.0

通过wget命令下载,首先安装wget

yum install wget

然后下载rocketmq,官网下载地址

,可以选择需要的版本,我下载的是rocketmq4.2.0

wget http://www-us.apache.org/dist/rocketmq/4.2.0/rocketmq-all-4.2.0

-bin-release.zip

解压

yum install zip unzip //安装unzip命令 unzip rocketmq-all-4.2.0-bin-release.zip -d

rocketmq-4.2.0 //解压

解压好后:

将rocketmq-4.2.0这个目录copy到/usr/local路径下(个人习惯,可以忽略)

cp -r rocketmq-4.2.0 /usr/local

这样准备工作就已经完成了,无需安装就可以直接使用了,Apache的很多东西都是这样。

2. 启动rocketmq

参考:官网 Quick Start

进入rocketmq目录

cd /usr/local/rocketmq-4.2.0

* 启动Name Server > nohup sh bin/mqnamesrv & // 启动 > tail -f

~/logs/rocketmqlogs/namesrv.log // 查看namaserver日志 The Name Server boot success

...

注意:启动过程中可能报错显示内存不足,报错信息如下:

# There is insufficient memory for the Java Runtime Environment to continue. #

Native memory allocation (mmap) failedto map 33554432 bytes for committing

reserved memory.

修改bin目录下的runserver.sh文件:

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:PermSize=128m

-XX:MaxPermSize=320m"

同理修改runbroker.sh文件:

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m

同理修改tools.sh文件:

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:PermSize=128m

-XX:MaxPermSize=128m"

启动成功:

* 启动Broker > nohup sh bin/mqbroker -n localhost:9876 & // 启动 > tail -f

~/logs/rocketmqlogs/broker.log // 查看broker日志 The broker[%s, 172.30.30.233:10911]

boot success...

注意:官网的这个启动命令特别坑,启动时broker会通过私有ip启动,会导致客户端无法远程连接,所以启动之前我们需要修改一下配置文件,修改如下:

vim /usr/local/rocketmq-4.2.0/conf/broker.conf

然后通过以下命令启动:

nohup sh bin/mqbroker -n xxxx:9876 autoCreateTopicEnable=true -c /usr/local

/rocketmq-4.2.0/conf/broker.conf & // 启动broker,xxxx为你的公有ip,或者是localhost也可以 tail

-f ~/logs/rocketmqlogs/broker.log // 查看broker日志

启动成功:

3. 客户端远程连接代码

官网示例地址

执行以下代码之前需要在阿里云安全组中开放以下端口:

需要的maven依赖

org.apache.rocketmq

rocketmq-client 4.2.0

com.alibabafastjson1.2.29

Producer 代码

public class Producer { public static void main(String[] args) throws

MQClientException, InterruptedException {// 声明并初始化一个producer // 需要一个producer

group名字作为构造方法的参数,这里为producer1 DefaultMQProducer producer = new

DefaultMQProducer("producer1"); producer.setVipChannelEnabled(false); //

设置NameServer地址,此处应改为实际NameServer地址,多个地址之间用;分隔 // NameServer的地址必须有 //

producer.setClientIP("119.23.211.22"); // producer.setInstanceName("Producer");

producer.setNamesrvAddr("119.23.211.22:9876"); // 调用start()方法启动一个producer实例

producer.start();// 发送1条消息到Topic为TopicTest,tag为TagA,消息内容为“Hello RocketMQ”拼接上i的值

try { // 封装消息 Message msg = new Message("TopicTest",// topic "TagA",// tag (

"Hello RocketMQ").getBytes(RemotingHelper.DEFAULT_CHARSET)// body ); //

调用producer的send()方法发送消息 // 这里调用的是同步的方式,所以会有返回结果 SendResult sendResult =

producer.send(msg);// 打印返回结果 System.out.println(sendResult); } catch

(RemotingException e) { e.printStackTrace(); }catch (MQBrokerException e) {

e.printStackTrace(); }catch (UnsupportedEncodingException e) {

e.printStackTrace(); }//发送完消息之后,调用shutdown()方法关闭producer System.out.println(

"send success"); producer.shutdown(); } }

Consumer 代码

public class Consumer { public static void main(String[] args) throws

InterruptedException, MQClientException {//声明并初始化一个consumer //需要一个consumer

group名字作为构造方法的参数,这里为consumer1 DefaultMQPushConsumer consumer = new

DefaultMQPushConsumer("consumer1"); //consumer.setVipChannelEnabled(false);

//同样也要设置NameServer地址 consumer.setNamesrvAddr("119.23.211.22:9876");

//这里设置的是一个consumer的消费策略 //CONSUME_FROM_LAST_OFFSET 默认策略,从该队列最尾开始消费,即跳过历史消息

//CONSUME_FROM_FIRST_OFFSET 从队列最开始开始消费,即历史消息(还储存在broker的)全部消费一遍

//CONSUME_FROM_TIMESTAMP 从某个时间点开始消费,和setConsumeTimestamp()配合使用,默认是半个小时以前

consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);

//设置consumer所订阅的Topic和Tag,*代表全部的Tag consumer.subscribe("TopicTest", "*");

//设置一个Listener,主要进行消息的逻辑处理 consumer.registerMessageListener(new

MessageListenerConcurrently() { @Overridepublic ConsumeConcurrentlyStatus

consumeMessage(List msgs, ConsumeConcurrentlyContext context) {

System.out.println(Thread.currentThread().getName() + " Receive New Messages: "

+ msgs); System.out.println(

"----------------------------------------------------------------------------------"

);//返回消费状态 //CONSUME_SUCCESS 消费成功 //RECONSUME_LATER 消费失败,需要稍后重新消费 return

ConsumeConcurrentlyStatus.CONSUME_SUCCESS; } });//调用start()方法启动consumer

consumer.start(); System.out.println("Consumer Started."); } }

测试结果:先启动Consumer,接受到Producer发送的消息会将详细打印出来

Consumer Started. ConsumeMessageThread_1 Receive New Messages: [MessageExt

[queueId=3, storeSize=176, queueOffset=1352, sysFlag=0, bornTimestamp=

1525920532015, bornHost=/115.236.50.15:59835, storeTimestamp=1525920532023,

storeHost=/119.23.211.22:10911, msgId=7717D31600002A9F00000000000EDF4C,

commitLogOffset=974668, bodyCRC=1774740973, reconsumeTimes=0,

preparedTransactionOffset=0, toString()=Message [topic=TopicTest, flag=0,

properties={MIN_OFFSET=0, MAX_OFFSET=1353, CONSUME_START_TIME=1525920532107,

UNIQ_KEY=0A15211928C018B4AAC230AB4A2E0000, WAIT=true, TAGS=TagA}, body=14]]]

----------------------------------------------------------------------------------

SendResult [sendStatus=SEND_OK, msgId=0A152119388C18B4AAC230AE98E10000,

offsetMsgId=7717D31600002A9F00000000000EE15C, messageQueue=MessageQueue

[topic=TopicTest, brokerName=broker-a, queueId=1], queueOffset=1353] send

success

4. 遇到的错误:

* broker启动ip错误

这里如果你之间安装过docker环境,broker启动时,如果没有设置brokerIP1的IP地址,也有可能会通过docker的虚拟ip启动,导致远程无法连接。

本文参考文章地址如下:

参考地址

rocketmq 远程连_RocketMQ-单机版安装及远程连接测试相关推荐

  1. 手机远程linux桌面,centos8安装xrdp远程桌面,Android手机连接linux桌面

    前言 毫无疑问手机已经成为了生产力,有时我们想用安卓手机远程连接centos/ubuntu/debian等linux系统,该怎么办呢? ssh连接可以远程访问终端,xrdp和vnc可以让我们远程连接l ...

  2. 01-bt面板安装redis,并连接测试

    1.在宝塔面板上安装最新版redis 2.在防火墙放行端口 3.启动redis服务 ######### 由于宝塔面板的redis没有redis-cli客户端,可以安装一个redis-stable来使用 ...

  3. linux系统上安装远程软件下载,如何安装向日葵远程控制软件Linux被控端?

    远程控制被控端现支持Linux系统主机了,只需在Linux系统下安装向日葵Linux被控端,在主控端使用Web方式就可以实现远程SSH,那么如何安装向日葵Linux被控端呢? 1.首先打开压缩包输入t ...

  4. centos6.4下tuxedo11gR1安装及jolt连接测试

    项目需要tuxedo环境,故花了半天搭建了一个tuxedo测试环境. 1.下载tuxedo 我这了选择的是tuxedo 11gR1,可以去oracle官网下载,我下载的是 tuxedo111130_6 ...

  5. RIS服务器的安装和远程自动安装操作系统(二)

    RIS服务器的安装和远程自动安装操作系统 在完成了安装RIS服务器之后,需要做一些设置才能够让RIS正常工作. 第二步设置: 1.首先需要创建一个或多个用户使用具有使用远程安装计算机的权限(这些实在服 ...

  6. linux会话管理,Linux 安装 screen 远程会话管理工具

    在使用景文互联的Linux 云服务器产品编译一些环境时,您可能需要花费不少的时间,如果编译时间过长,可能导致当前SSH会话超时,从而断开了SSH,也终止了环境编译的进程,这对用户使用体验非常不利,所以 ...

  7. 实验四:Telnet远程登录服务器的安装、管理及Telnet客户端的应用

    实验四:Telnet远程登录服务器的安装.管理 及Telnet客户端的应用 一.       实验目的 1.掌握Telnet远程登录服务器的安装.使用和配置: 2.熟悉Telnet客户端使用方法. 二 ...

  8. Nagios远程监控软件的安装与配置详解

    Nagios远程监控软件的安装与配置详解 作者:redhat_hu Nagios是一款功能强大的网络监视工具,它可以有效的监控windows.linux.unix主机状态以及路由器交换机的网络设置,打 ...

  9. centos 7 ssh 安装mysql,Linux服务器远程ssh为centos7安装MySQL

    最近为客户选了个云服务器 操作系统选择CentOS 7.0 64位 通过ssh远程安装MySQL5.6,与大家分享安装过程 ssh远程客户端选择的是xshell,感觉比较好用,可以直接通过绑定的xft ...

最新文章

  1. python变量下划线开头_一日一技:python中下划线在不同位置的作用
  2. vue实例属性之el,template,render
  3. post如何获取到referrer_如何使用 ThinkJS 优雅的编写 RESTful API
  4. 骨牌覆盖问题总结!hihoCoder/ NYOJ-1273宣传墙1151
  5. python如何定位路径_selenium_webdriver(python)查看文件路径,鼠标定位
  6. 初步了解关于js跨域问题
  7. c++ 结构体初始化_C/C++编程笔记:C语言和C++语言的 struct 对比!区别在哪里?
  8. 通解:HTTP超时,或者require TLS/SSL,亦或者conda install / update/ create Solving environment不停
  9. 爱快软路由拨号移动网络设置
  10. IPVS之Bypass转发模式
  11. c语言程序经过链接以后生成的文件名的后缀为,请多多指教,感激不尽11.C语言程序经过编译以后生成的文件名的后缀为( ).A..c B..obj C..exe D.....
  12. My interest is the rules/ways to implement, go and insist with interest!!!
  13. 钢铁侠或漫威中有哪些黑科技?
  14. 英雄算法联盟 - 六月集训排行榜 (截止今日第31天)
  15. 在Word2019中,如何让回车符消失
  16. 4k分辨率是多少(真4k与假4k区别)
  17. iOS调用系统通讯录获取姓名电话号码
  18. 从Bugreport 解读 Android电量统计原理
  19. LVGL-gui_user.h
  20. oxidized配置(docker版)

热门文章

  1. Next.js v4.1.4 文档中文翻译
  2. 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L
  3. 从“最后一公里”问题谈起
  4. 价值创造链路及经营计划
  5. 谷歌chrome安卓版_谷歌Chrome安卓版测试全新共享界面:二维码和截图来了
  6. 工作流网(workflow net)
  7. 正则表达式的.*?不包含空格(解决办法)
  8. 搜索引擎免费登陆入口
  9. windows10 企业版激活处于通知模式怎么处理
  10. 缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印