linux安装RocketMQ实例步骤

下面是“Linux安装RocketMQ实例步骤”的完整攻略。

准备工作

在进行安装前,请确保你已经完成如下步骤:

  1. 安装好Java环境(建议使用JDK 8及以上版本)。
  2. 确认安装好了RocketMQ服务端的压缩包(下载地址详见官网)。
  3. 确认你拥有安装并运行RocketMQ所需的系统权限。

安装步骤

  1. 下载RocketMQ服务端的压缩包,解压到指定目录下:

bash
tar zxvf rocketmq-all-4.9.1-bin-release.tar.gz -C /usr/local/

  1. 配置环境变量:

~/.bashrc~/.bash_profile末尾追加以下内容:

bash
export ROCKETMQ_HOME=/usr/local/rocketmq-all-4.9.1-bin-release
export PATH=$PATH:$ROCKETMQ_HOME/bin

让配置生效:

bash
source ~/.bashrc

  1. 启动Name Server和Broker:

bash
nohup sh $ROCKETMQ_HOME/bin/mqnamesrv &
nohup sh $ROCKETMQ_HOME/bin/mqbroker -n localhost:9876 &

  1. 验证是否启动成功:

bash
tail -f $ROCKETMQ_HOME/logs/rocketmqlogs/namesrv.log
tail -f $ROCKETMQ_HOME/logs/rocketmqlogs/broker.log

上述命令行的输出日志中如果没有错误信息,则说明安装成功。

示例说明

示例一:创建Topic

创建一个示例的test_topic Topic,分别在两个Producer和Consumer上发布和接收消息。

  1. 先启动Consumer:

bash
sh $ROCKETMQ_HOME/bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer test_consumer_group test_topic localhost:9876

  1. 再启动两个Producer:

bash
sh $ROCKETMQ_HOME/bin/tools.sh org.apache.rocketmq.example.quickstart.Producer test_topic localhost:9876
sh $ROCKETMQ_HOME/bin/tools.sh org.apache.rocketmq.example.quickstart.Producer test_topic localhost:9876

  1. 通过Producer分别向Topic发送消息:

bash
hello rocketmq 1
hello rocketmq 2

  1. 在Consumer上看是否可以接收到消息:

CONSUME: ConsumeResult [MessageExt=messageExt {topic='test_topic', brokerName='**', queueId=1, storeSize=129, queueOffset=1, sysFlag=0, bornTimestamp=1642424835662, bornHost=/192.168.1.1:40482, storeTimestamp=1642424835728, storeHost=/192.168.1.1:10911, msgId='3662D71846360DD1AAC4926847E00000', commitLogOffset=889, bodyCRC=1583895369, reconsumeTimes=0, preparedTransactionOffset=0}, status=CONSUME_SUCCESS, isSuccess=true]
CONSUME: ConsumeResult [MessageExt=messageExt {topic='test_topic', brokerName='**', queueId=1, storeSize=129, queueOffset=2, sysFlag=0, bornTimestamp=1642424841707, bornHost=/192.168.1.1:40482, storeTimestamp=1642424841726, storeHost=/192.168.1.1:10911, msgId='3662D71B00000DD1AAC4926847FE0000', commitLogOffset=1705, bodyCRC=-1914527645, reconsumeTimes=0, preparedTransactionOffset=0}, status=CONSUME_SUCCESS, isSuccess=true]

示例二:消息发送状态查询

通过查询消息发送状态,可以判断消息是否发送成功,并找到发送失败的原因。

  1. 先启动Producer:

bash
sh $ROCKETMQ_HOME/bin/tools.sh org.apache.rocketmq.example.quickstart.Producer test_topic localhost:9876

  1. 发送消息并查看发送状态:

bash
sh $ROCKETMQ_HOME/bin/rocketmq-console.sh queryMsgById -n localhost:9876 --msgId=C0A81A0100002A9F00000000003C4F2E

上述命令中的--msgId参数值需要替换为实际发送的消息ID。

如果消息发送成功,则会返回如下信息:

{
"msgId": "C0A81A0100002A9F00000000003C4F2E",
"messageQueue": {
"brokerName": "**",
"topic": "test_topic",
"queueId": 0
},
"status": "SEND_OK",
"body": "***",
"QueueOffset": 6,
"queueId": 0,
"transactionId": null,
"bornTimestamp": 1642429384913,
"storeTimestamp": 1642429384945,
"bornHost": "192.168.1.1:38676",
"storeHost": "192.168.1.1:10911",
"commitLogOffset": 1573,
"bodyCRC": 229289180,
"reconsumeTimes": 0
}

如果消息发送失败,则会返回如下信息:

{
"msgId": "C0A81A0100002A9F00000000003C4F2E",
"messageQueue": {
"brokerName": "**",
"topic": "test_topic",
"queueId": 0
},
"status": "SEND_OK",
"body": "***",
"QueueOffset": 6,
"queueId": 0,
"transactionId": null,
"bornTimestamp": 1642429384913,
"storeTimestamp": 1642429384945,
"bornHost": "192.168.1.1:38676",
"storeHost": "192.168.1.1:10911",
"commitLogOffset": 1573,
"bodyCRC": 229289180,
"reconsumeTimes": 3
}

如果消息发送过程中遇到了某些问题,那么status字段的值就会反映出对应的情况。例如,如果因为Broker无法写入消息而发送失败,则status字段的值为FLUSH_DISK_TIMEOUT。在查看消息发送状态时,你需要参考官方文档来对各种发送状态进行识别和判断。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux安装RocketMQ实例步骤 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • 详解Java中native关键字

    首先我们需要了解一下Java中native关键字的含义。 Native关键字 在Java中,native关键字被用来修饰一个方法,标记这个方法是用外部语言(如C或C++)实现的。通俗地说,native表示这个方法的实现不是在Java代码中,而是在外部的二进制库中。使用native可以让Java代码与外部代码(如C++)实现交互,为Java提供了更强大的功能。…

    Java 2023年5月26日
    00
  • JSP针对表单重复提交的处理方法

    JSP针对表单重复提交的处理方法包括以下几步: 1.在提交表单的jsp页面中添加一个隐藏域,用于标识表单是否已经提交过。例如: <form method="post" action="submit.jsp"> <input type="hidden" name="subm…

    Java 2023年6月15日
    00
  • Java使用正则表达式提取XML节点内容的方法示例

    下面是详细讲解“Java使用正则表达式提取XML节点内容的方法示例”的完整攻略。 正则表达式提取XML节点内容的原理 在XML文件中,我们通常可以使用节点标记(例如””和””)来标识节点的开始和结束位置,因此可以利用正则表达式来匹配节点标记以提取节点内容。例如,如果我们要提取一个名为”title”的节点的内容,我们可以使用以下正则表达式: <\s*ti…

    Java 2023年5月26日
    00
  • SpringBoot整合junit与Mybatis流程详解

    在Spring Boot应用程序中,我们可以使用JUnit和MyBatis来进行单元测试和数据库操作。本文将详细介绍如何在Spring Boot应用程序中整合JUnit和MyBatis,并演示如何进行单元测试和数据库操作。 1. 整合JUnit和MyBatis的步骤 在Spring Boot应用程序中整合JUnit和MyBatis的步骤如下: 添加JUnit…

    Java 2023年5月18日
    00
  • SpringBoot @Import与@Conditional注解使用详解

    下面是关于“SpringBoot @Import与@Conditional注解使用详解”的完整攻略。 标题 一、@Import注解的使用 @Import注解是Spring Framework中的一个注解,用于引入其他的Component。在Spring Boot中,@Import注解常用于引入自定义的Configuration类。下面是一个示例代码: @Co…

    Java 2023年5月19日
    00
  • Spring Data Jpa返回自定义对象的3种方法实例

    下面就为大家详细介绍如何使用Spring Data JPA返回自定义对象的三种方法。 1. 使用构造函数返回自定义对象 我们可以在自定义的Repository接口中,编写返回自定义对象的方法,并在其方法名上使用@Query注解来编写自定义的SQL语句,例如: @Repository public interface UserRepository extend…

    Java 2023年5月20日
    00
  • Mybatis实现Mapper动态代理方式详解

    Mybatis实现Mapper动态代理方式详解 什么是Mapper动态代理 Mapper动态代理是Mybatis框架中的一种技术,在Mybatis中通过定义Mapper接口,在运行时自动生成接口的代理对象。使用Mapper动态代理可以使我们更加方便地编写接口,不需要编写SQL语句,提高代码的可读性和可维护性。 实现步骤 1. 定义Mapper接口 首先,我们…

    Java 2023年5月20日
    00
  • 转载一个别人收藏的精典网站Ruby,HIBERNATE相关

    关于“转载一个别人收藏的精典网站Ruby,HIBERNATE相关”的完整攻略,我会按照以下步骤进行详细讲解: 1. 确定转载目的 在转载一篇文章之前,我们需要明确自己的转载目的。是为了丰富自己的博客内容,还是为了分享给更多人?这一点很重要,因为它将决定你应该如何进行转载。 2. 征求原作者许可 在转载别人的文章之前,最重要的是要获得原作者的授权,否则可能会引…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部