rocketmq使用-broker监听端口,多个生产者消费者问题

1.broker监听端口问题

安装云端rocketmq在使用java链接的时候回出现一个端口链接问题,报错如下:

“org.apache.rocketmq.remoting.exception.RemotingConnectException: connection to ip : 10911 failed”

后来设置了broker启动的时候参数

nohup sh mqbroker -n 49.235.21.109:9876 autoCreateTopicEnable=true -c /usr/local/rocketmq-rocketmq-all-4.2.0/distribution/target/apache-rocketmq/conf/broker.properties >/usr/local/logs/rocketmqlogs/broker.log 2>&1 &

创建一个文件broker.properties,里面编写

brokerIP1=49.235.21.109
listenPort=10919

指定外网地址及监听端口,后来发现启动后自动占用了三个端口,分别是10917,10919,10920。java连接的时候固定使用的10917,目前还没有找到为什么会监听端口-2的端口去连接。

2.多个生产多个消费者问题

一个rocketMQ的group组下面不能有多个生产者同时注册及多个消费者同时注册,想要实现多个生产者跟消费者,要设置多个组,一个组对应的只有一个生产消费。
例子:

DefaultMQProducer defaultMQProducer1 = new DefaultMQProducer("hmops");

defaultMQProducer1注册到了hmops组,这个时候再注册一个生产者进去

DefaultMQProducer defaultMQProducer2 = new DefaultMQProducer("hmops");

此时就会报错
java.lang.RuntimeException: org.apache.rocketmq.client.exception.MQClientException: The producer group[hmops] has been created before, specify another name please.

消费者也一样的例子

DefaultMQPushConsumer consumer1 = new DefaultMQPushConsumer("hmops");
DefaultMQPushConsumer consumer2 = new DefaultMQPushConsumer("hmops");

Error creating bean with name 'consumer2' defined in class path resource [com/hmop/tpd/configuration/RocketMQConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.rocketmq.client.consumer.DefaultMQPushConsumer]: Factory method 'getRocketMQConsumer' threw exception; nested exception is java.lang.RuntimeException: org.apache.rocketmq.client.exception.MQClientException: The consumer group[hmops] has been created before, specify another name please.
最后得到结论,一个组只能有一个生产者及消费者进行注册,组里面的消费者可以订阅组下面的多个topic主题及tag标签。

consumer.subscribe("topic1", "tag1");
consumer.subscribe("topic2", "tag2");

业务区分在监听消费类中进行代码区分。

你可能感兴趣的:(Java开发笔记)