docker-compose 部署rocketMq后创建topic出错

本文介绍了在使用docker-compose部署RocketMQ后遇到创建topic失败的问题,详细讲述了错误信息‘MQClientException: No route info of this topic, TopicTest’的解决过程。通过进入docker容器,检查并修改tools.sh脚本中-Djava.ext.dirs的路径,最终成功查看到topic的路由信息。" 113166279,10545362,MySQL自定义排序使用field()函数解析,"['数据库', 'SQL', 'MySQL函数']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rocketmq中文介绍及简单示例

docker-compose 部署 rocketmq

发送消息时出现错误

MQClientException: No route info of this topic, TopicTest

  1. 进入docker容器,docker exec -it rmqnamesrv /bin/sh
  2. 查看具体日志:./mqadmin topicRoute -n localhost:9876 -t TopicTest
org.apache.rocketmq.tools.command.SubCommandException: TopicRouteSubCommand command failed
   at org.apache.rocketmq.tools.command.topic.TopicRouteSubCommand.execute(TopicRouteSubCommand.java:64)
   at org.apache.rocketmq.tools.command.MQAdminStartup.main0(MQAdminStartup.java:138)
   at org.apache.rocketmq.tools.command.MQAdminStartup.main(MQAdminStartup.java:89)
Caused by: org.apache.rocketmq.acl.common.AclException: [10015:signature-failed] unable to calculate a request signature. error=[10015:signature-failed] unable to calculate a request signature. error=Algorithm HmacSHA1 not available
   at org.apache.rocketmq.acl.common.AclSigner.signAndBase64Encode(AclSigner.java:84)
   at org.apache.rocketmq.acl.common.AclSigner.calSignature(AclSigner.java:73)
   at org.apache.rocketmq.acl.common.AclSigner.calSignature(AclSigner.java:68)
   at org.apache.rocketmq.acl.common.AclUtils.calSignature(AclUtils.java:68)
   at org.apache.rocketmq.acl.common.AclClientRPCHook.doBeforeRequest(AclClientRPCHook.java:44)
   at org.apache.rocketmq.remoting.netty.NettyRemotingAbstract.doBeforeRpcHooks(NettyRemotingAbstract.java:172)
   at org.apache.rocketmq.remoting.netty.NettyRemotingClient.invokeSync(NettyRemotingClient.java:370)
   at org.apache.rocketmq.client.impl.MQClientAPIImpl.getTopicRouteInfoFromNameServer(MQClientAPIImpl.java:1331)
   at org.apache.rocketmq.client.impl.MQClientAPIImpl.getTopicRouteInfoFromNameServer(MQClientAPIImpl.java:1321)
   at org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl.examineTopicRouteInfo(DefaultMQAdminExtImpl.java:305)
   at org.apache.rocketmq.tools.admin.DefaultMQAdminExt.examineTopicRouteInfo(DefaultMQAdminExt.java:251)
   at org.apache.rocketmq.tools.command.topic.TopicRouteSubCommand.execute(TopicRouteSubCommand.java:60)
   ... 2 more
Caused by: org.apache.rocketmq.acl.common.AclException: [10015:signature-failed] unable to calculate a request signature. error=Algorithm HmacSHA1 not available
   at org.apache.rocketmq.acl.common.AclSigner.sign(AclSigner.java:63)
   at org.apache.rocketmq.acl.common.AclSigner.signAndBase64Encode(AclSigner.java:79)
   ... 13 more
Caused by: java.security.NoSuchAlgorithmException: Algorithm HmacSHA1 not available
   at javax.crypto.Mac.getInstance(Mac.java:181)
   at org.apache.rocketmq.acl.common.AclSigner.sign(AclSigner.java:57)
   ... 14 more

  1. 查找/jre/lib/ext jar包路径:find / -name ‘ext’ |grep jdk
find: '/proc/tty/driver': Permission denied
find: '/root': Permission denied
find: '/run/cryptsetup': Permission denied
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/bin/extcheck
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/jre/lib/ext
/usr/lib/jvm-exports/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/jdbc-stdext-1.8.0.222.b10.jar
/usr/lib/jvm-exports/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/jdbc-stdext-1.8.0.jar
/usr/lib/jvm-exports/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/jdbc-stdext-3.0.jar
/usr/lib/jvm-exports/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/jdbc-stdext.jar

  1. 修改tools.sh: vi tools.sh (-Djava.ext.dirs 值后面添加XX/XX/jre/lib/ext全路径)

#===========================================================================================
# JVM Configuration
#===========================================================================================
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext:${JAVA_HOME}/lib/ext:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/jre/lib/ext"
JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"

$JAVA ${JAVA_OPT} $@

  1. 再次查看日志信息:mqadmin topicRoute -n localhost:9876 -t TopicTest
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
{
	"brokerDatas":[
		{
			"brokerAddrs":{0:"172.22.0.4:10911"
			},
			"brokerName":"broker-a",
			"cluster":"DefaultCluster"
		}
	],
	"filterServerTable":{},
	"queueDatas":[
		{
			"brokerName":"broker-a",
			"perm":6,
			"readQueueNums":16,
			"topicSynFlag":0,
			"writeQueueNums":16
		}
	]
}

<think>好的,用户想了解如何在Docker Desktop中使用Pulsar的教程,包括安装配置和运行指南。我需要根据提供的引用内容来组织回答。 首先,引用[1]提到通过Docker安装Apache Pulsar的指南,这应该是主要的参考点。用户可能已经安装了Docker Desktop,但需要确认他们的系统环境是否满足要求,比如Windows版本和Docker的配置。引用[2]提到在Windows上安装DockerDocker Compose,这可能对用户有帮助,但用户的问题已经集中在Docker Desktop上,所以可能需要简要提及环境准备步骤。 接下来,我需要分步骤说明安装和配置Pulsar。使用Docker命令拉取Pulsar镜像,运行容器,并验证是否成功。这部分需要具体的命令示例,比如docker run的参数,端口映射等。此外,用户可能需要知道如何访问Pulsar的管理界面和客户端连接,所以需要提供对应的URL和端口信息。 然后,运行指南部分应该包括基本操作,比如创建主题、生产者和消费者。这里需要用代码示例来展示,比如使用pulsar-client工具执行命令。同时,优化配置方面,可以提到挂载卷持久化数据和使用Docker Compose管理多容器部署,引用[2]中的Docker Compose部分可以支持这一点。 用户可能还会遇到常见问题,比如端口冲突或者容器无法启动,需要给出解决方案。例如,检查端口占用情况,查看容器日志等。这些步骤能帮助用户自行排查问题。 最后,生成相关问题需要考虑用户可能进一步的需求,比如集群部署、管理工具、性能优化和与其他系统的集成。这些问题可以引导用户深入学习和应用Pulsar。 需要确保所有数学公式和独立公式符合LaTeX格式要求,但在这个问题中可能涉及较少数学内容。回答要使用中文,结构清晰,步骤详细,并正确引用提供的资料。同时,要检查命令的正确性,避免错误,比如正确的镜像名称和端口号。</think>### Docker Desktop 中 Apache Pulsar 的安装与使用指南 #### 一、环境准备 1. **安装 Docker Desktop** 确保已安装最新版 [Docker Desktop](https://www.docker.com/products/docker-desktop/)(Windows/Mac 均适用),并启用 WSL2(Windows 用户)或 HyperKit(Mac 用户)[^2]。 2. **验证 Docker 运行状态** 打开终端,输入以下命令: ```bash docker --version ``` 若返回版本号(如 `Docker version 24.0.7`),则安装成功。 --- #### 二、安装与配置 Apache Pulsar 1. **拉取 Pulsar 镜像** 使用官方镜像 `apachepulsar/pulsar`: ```bash docker pull apachepulsar/pulsar:latest ``` 2. **启动 Pulsar 单机模式容器** 运行以下命令启动包含所有组件的容器(包括 Broker、BookKeeper、ZooKeeper): ```bash docker run -d \ -p 6650:6650 -p 8080:8080 \ --name pulsar-standalone \ apachepulsar/pulsar:latest \ bin/pulsar standalone ``` - **端口说明** - `6650`: Pulsar 服务端口 - `8080`: Admin API 和管理界面端口 3. **验证运行状态** 检查容器日志: ```bash docker logs pulsar-standalone ``` 若输出包含 `Server started at http://0.0.0.0:8080`,则启动成功。 --- #### 三、基本操作指南 1. **访问管理界面** 浏览器打开 `http://localhost:8080`,可查看集群状态、租户(Tenant)、命名空间(Namespace)和主题(Topic)。 2. **使用 Pulsar 客户端** 进入容器执行命令: ```bash docker exec -it pulsar-standalone /bin/bash ``` - **生产消息** ```bash bin/pulsar-client produce my-topic --messages "Hello Pulsar" ``` - **消费消息** ```bash bin/pulsar-client consume my-topic -s "my-subscription" ``` --- #### 四、配置优化 1. **数据持久化** 挂载本地目录保存数据: ```bash docker run -d \ -v /path/to/pulsar/data:/pulsar/data \ -p 6650:6650 -p 8080:8080 \ --name pulsar-standalone \ apachepulsar/pulsar:latest \ bin/pulsar standalone ``` 2. **使用 Docker Compose 部署** 创建 `docker-compose.yml` 文件: ```yaml version: '3' services: pulsar: image: apachepulsar/pulsar:latest command: bin/pulsar standalone --no-functions-worker -nss ports: - "6650:6650" - "8080:8080" volumes: - ./data:/pulsar/data ``` 启动服务: ```bash docker-compose up -d ``` --- #### 五、常见问题解决 1. **端口冲突** 若 `8080` 或 `6650` 被占用,修改映射端口(如 `-p 8081:8080`)。 2. **容器启动失败** 检查日志定位错误: ```bash docker logs pulsar-standalone ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值