rocketMQ生产者和消费者
来源:互联网 发布:集美大学网络中心主任 编辑:程序博客网 时间:2024/06/10 10:36
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">简单写一个MQ的生产者和消费者。生产者生产4个topic。消费者订阅消费,多线程启动4个线程,每个线程新建一个消费者来消费一个topic的数据。rocketMQ本身就是多线程的,设置每个消费者的线程数为5个。例子如下:</span>
生产者代码如下:
import javax.annotation.PreDestroy;import com.alibaba.rocketmq.client.exception.MQClientException;import com.alibaba.rocketmq.client.producer.DefaultMQProducer;public class Producer {public static DefaultMQProducer defaultMQproducer; static String rocketmqAddress ="10.20.18.20:9876";public static DefaultMQProducer init() { if (null == defaultMQproducer){ defaultMQproducer = new DefaultMQProducer("messageGroup"); defaultMQproducer.setNamesrvAddr(rocketmqAddress); defaultMQproducer.setInstanceName("messageProducer"); defaultMQproducer.setMaxMessageSize(9999999); try { defaultMQproducer.start();} catch (MQClientException e) {} }return defaultMQproducer;}@PreDestroypublic void preDestroy(){ if (defaultMQproducer != null) { defaultMQproducer.shutdown(); }}}
import com.alibaba.fastjson.JSON;import com.alibaba.rocketmq.client.producer.DefaultMQProducer;import com.alibaba.rocketmq.client.producer.SendResult;import com.alibaba.rocketmq.common.message.Message;public class ProduceCar {public static void main(String args[]){ for (int i=1;i<=4;i++){for (int j=1;j<=100;j++){ Message msg = new Message("hello"+String.valueOf(i), JSON.toJSONString(i+"hello"+j).getBytes()); DefaultMQProducer difaultProducer = Producer.init(); try {SendResult sendResult = difaultProducer.send(msg);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} }} System.out.println("finished");}}
消费者代码如下:
import java.util.HashMap;import java.util.Map;import java.util.concurrent.Executor;import java.util.concurrent.Executors;public class Consumer { public static void main(String args[]){ try{ Executor executor = Executors.newFixedThreadPool(4); Map<String,String> map = new HashMap(); int i=0; map.put("hello1", "5"); map.put("hello2", "5"); map.put("hello3", "5"); map.put("hello4", "5"); for (String key : map.keySet()) { i+=1; //logger.aduit("Key = {0}, Value = {1}",entry.getKey(),entry.getValue()); ConsumerFactory runComsumer = new ConsumerFactory(); runComsumer.setTopics(key); runComsumer.setInstanceName("ConsumerInstance"+key); runComsumer.setThreadNum(Integer.valueOf(map.get(key))); runComsumer.setGroupName("Consumer"+key); executor.execute(runComsumer); } }catch(Exception e){ System.out.println("create consumer err:{0}"+ e.getMessage()); } }}
import java.util.List;import com.alibaba.fastjson.JSON;import com.alibaba.rocketmq.client.consumer.DefaultMQPushConsumer;import com.alibaba.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;import com.alibaba.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;import com.alibaba.rocketmq.client.consumer.listener.MessageListenerConcurrently;import com.alibaba.rocketmq.common.message.MessageExt;public class ConsumerFactory extends Thread{ public final static String ANDROID = "Android"; public final static String IOS = "Ios"; private String rocketmqAddress="10.20.18.20:9876"; int threadNum; String topics; String instanceName; String groupName; DefaultMQPushConsumer consumer = null; @Override public void run() { try { consumer = new DefaultMQPushConsumer(groupName); consumer.setNamesrvAddr(rocketmqAddress);//MQ地址 consumer.setClientCallbackExecutorThreads(threadNum);//消费现场数量 consumer.setInstanceName(instanceName);//实例名称 consumer.subscribe(topics, "*"); //注册监听 consumer.registerMessageListener(new MessageListenerConcurrently() { @Override public ConsumeConcurrentlyStatus consumeMessage( List<MessageExt> msgs, ConsumeConcurrentlyContext context) { for (int i = 0; i < msgs.size(); i++) { MessageExt msgExt = msgs.get(i); String msgId = msgExt.getMsgId(); String mesBody = new String(msgExt.getBody()); System.out.println(mesBody); } return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; } }); consumer.start(); System.out.println("线程执行中"); } catch (Exception e) { System.out.println(e); } } public int getThreadNum() { return threadNum; } public void setThreadNum(int threadNum) { this.threadNum = threadNum; } public String getTopics() { return topics; } public void setTopics(String topics) { this.topics = topics; } public String getInstanceName() { return instanceName; } public void setInstanceName(String instanceName) { this.instanceName = instanceName; } public String getGroupName() { return groupName; } public void setGroupName(String groupName) { this.groupName = groupName; } }
0 0
- rocketMQ生产者和消费者
- Rocketmq生产者和push消费者demo
- RocketMQ生产者消费者DEMO
- RocketMQ nameserver、broker、生产者和消费者之间的关系
- RocketMq案例,生产者,消费者,消息订阅
- RocketMQ生产者消费者部分源码分析总结
- 生产者和消费者
- 生产者和消费者
- 消费者和生产者问题
- 生产者和消费者
- pv 生产者和消费者
- 生产者和消费者
- 生产者和消费者
- java 生产者和消费者
- 多线程生产者和消费者
- 生产者和消费者问题
- 生产者和消费者
- 生产者和消费者问题
- 函数_getattr()
- POI导出Excel时候总是出现中文名乱码问题
- Python range()函数
- Jmeter使用
- OSN3500设备的FXSO12单板介绍
- rocketMQ生产者和消费者
- nginx +tomcat7+memcached负载均衡配置
- 第八周 OJ练习-1
- grunt实现把一个文件夹的目录和js一一对应压缩
- HTTP 协议详解 (补充)
- Linux基础学习笔记(Linux达人养成计划 I)
- IOS 点赞效果
- 【译】前端是 ? 而 JavaScript 是 ?
- 认识多任务、多进程、单线程、多线程