Java操作RocketMQ
导入依赖
<dependency> <groupId>com.alibaba.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>3.0.10</version> </dependency> <dependency> <groupId>com.alibaba.rocketmq</groupId> <artifactId>rocketmq-all</artifactId> <version>3.0.10</version> <type>pom</type> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.1.1</version> </dependency>
提供者
/** * 生产者 */ public class Provider { public static void main(String[] args) throws MQClientException { //创建一个生产者 DefaultMQProducer producer=new DefaultMQProducer("rmq-group"); //设置NameServer地址 producer.setNamesrvAddr("192.168.33.135:9876;192.168.33.136:9876"); //设置生产者实例名称 producer.setInstanceName("producer"); //启动生产者 producer.start(); try { //发送消息 for (int i=1;i<=10;i++){ //模拟网络延迟,每秒发送一次MQ Thread.sleep(1000); //创建消息,topic主题名称 tags临时值代表小分类, body代表消息体 Message message=new Message("itmayiedu-topic","TagA",("itmayiedu-"+i).getBytes()); //发送消息 SendResult sendResult=producer.send(message); System.out.println("来了来了:"+sendResult.toString()); } } catch (Exception e) { e.printStackTrace(); } producer.shutdown(); } }
消费者
public class Consumer { public static void main(String[] args) throws MQClientException { //创建消费者 DefaultMQPushConsumer consumer=new DefaultMQPushConsumer("rmq-group"); //设置NameServer地址 consumer.setNamesrvAddr("192.168.33.135:9876;192.168.33.136:9876"); //设置实例名称 consumer.setInstanceName("consumer"); //订阅topic consumer.subscribe("itmayiedu-topic","TagA"); //监听消息 consumer.registerMessageListener(new MessageListenerConcurrently() { @Override public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> list, ConsumeConcurrentlyContext consumeConcurrentlyContext) { //获取消息 for (MessageExt messageExt:list){ //RocketMQ由于是集群环境,所有产生的消息ID可能会重复 System.out.println(messageExt.getMsgId()+"---"+new String(messageExt.getBody())); } //接受消息状态 1.消费成功 2.消费失败 队列还有 return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; } }); //启动消费者 consumer.start(); System.out.println("consumer Started!"); } }
控制台效果
提供者
消费者