关于RocketMQ使用过程中遇到的坑(持续更新)

内容为持续更新,遇到了都会在下方总结说明

问题如下:

RemotingTooMuchRequestException

在生产者执行过程中,消息的发送遇到的详情如下:

org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout

我们先看源代码发送消息方式:

	Message message = new Message(topic, tag, dataJson.getBytes(RemotingHelper.DEFAULT_CHARSET));
    defaultMQProducer.send(message);

解决方式一:

  defaultMQProducer.send(message, 8000);
这种方式并非我本人遇到的情况,但查阅说有个别这种原因导致超时。

解决方式二:

 producer.setVipChannelEnabled(false);
这种方式本人亲测,发现生产者是生效的,但消费者comsumer.setVipChannelEnabled(false)依旧有无法解决这个问题

解决方式三:

找运维开通服务器与rocketmq的vip端口10909。本人遇到的问题归根结底是走了mq的vip端口,而端口不通,导致了连接超时,无法进行消息的通讯
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java使用RocketMQ需要以下步骤: 1. 下载RocketMQ:从官网下载RocketMQ的二进制包并解压。 2. 启动NameServer和Broker:进入解压后的目录,分别执行namesrv和broker命令来启动NameServer和Broker。 3. 引入RocketMQ客户端依赖:在Java项目的pom.xml文件添加以下依赖: ``` <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.8.0</version> </dependency> ``` 4. 编写Producer和Consumer代码:使用RocketMQJava客户端API编写Producer和Consumer的代码,示例代码如下: Producer代码: ``` import org.apache.rocketmq.client.producer.DefaultMQProducer; import org.apache.rocketmq.common.message.Message; public class RocketMQProducer { public static void main(String[] args) throws Exception { DefaultMQProducer producer = new DefaultMQProducer("producer_group"); producer.setNamesrvAddr("localhost:9876"); producer.start(); Message message = new Message("topic_name", "tag_name", "Hello RocketMQ".getBytes()); producer.send(message); producer.shutdown(); } } ``` Consumer代码: ``` import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently; import org.apache.rocketmq.client.exception.MQClientException; import org.apache.rocketmq.common.consumer.ConsumeFromWhere; import org.apache.rocketmq.common.message.MessageExt; public class RocketMQConsumer { public static void main(String[] args) throws Exception { DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumer_group"); consumer.setNamesrvAddr("localhost:9876"); consumer.subscribe("topic_name", "*"); consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET); consumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) -> { for (MessageExt msg : msgs) { System.out.println(new String(msg.getBody())); } return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; }); consumer.start(); } } ``` 5. 运行Producer和Consumer代码:运行Producer和Consumer代码,可以在控制台看到消息的发送和消费情况。 以上就是在Java使用RocketMQ的基本步骤和示例代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值