RocketMQ与Spring集成
来源:互联网 发布:施工组织设计编制软件 编辑:程序博客网 时间:2024/05/21 10:12
RocketMQ与Spring集成,采用push方式接收消息
maven依赖
<dependency> <groupId>com.alibaba.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>3.2.6</version> </dependency> <dependency> <groupId>com.alibaba.rocketmq</groupId> <artifactId>rocketmq-all</artifactId> <version>3.2.6</version> <type>pom</type> </dependency>
监听处理类
public class MessageListenerImpl implements MessageListenerConcurrently { private static final Logger LOG = LoggerFactory.getLogger(MessageListenerImpl.class); @Override public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) { LOG.info(Thread.currentThread().getName() + " Receive New Messages: " + msgs.size()+";msg:" + msgs); for (MessageExt msg : msgs) { try { System.out.println(">>>>"+new String(msg.getBody(),"UTF-8")); } catch (UnsupportedEncodingException e) { LOG.error(e.toString()); } } // 有异常抛出来,不要全捕获了,这样保证不能消费的消息下次重推,每次重新消费间隔:10s,30s,1m,2m,3m // 如果没有异常会认为都成功消费 return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; }}
Spring配置
<!-- rocketmq配置 --> <bean id="messageListeners" class="com.xx.service.mq.rocketmq.MessageListenerImpl"></bean> <!-- 导入Spring配置文件 --> <bean id="rocketmqConsumer" class="com.alibaba.rocketmq.client.consumer.DefaultMQPushConsumer" init-method="start" destroy-method="shutdown"> <property name="consumerGroup" value="${rocketmq.consumerGroup}"/> <property name="instanceName"> <!-- 获取静态方法返回值作为参数值 --> <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetClass"> <value>com.xx.utils.RunTimeUtil</value> </property> <property name="targetMethod"> <!-- 必须是静态方法 --> <value>getRocketMqUniqeInstanceName</value> </property> </bean> </property> <property name="namesrvAddr" value="${rocketmq.namesrvAddr}"/> <property name="messageListener" ref="messageListeners"/> <property name="subscription"> <map> <entry key="${rocketmq.topic}" value="${rocketmq.tags}" /> </map> </property> </bean>
consumerGroup name不需要同生产者一致,可以自行定义,一般定义为同topic,应该具有唯一性;
instanceName不需要同生产者一致,可以自行定义,应该具有唯一性。便于将来可以在控制台根据名称搜索到对应服务。
RunTimeUtil
这是个生成唯一id的工具类
import java.lang.management.ManagementFactory;import java.lang.management.RuntimeMXBean;import java.util.Random;import java.util.concurrent.atomic.AtomicInteger;public class RunTimeUtil { private static AtomicInteger index = new AtomicInteger(); public RunTimeUtil() { } public static int getPid() { String info = getRunTimeInfo(); int pid = (new Random()).nextInt(); int index = info.indexOf("@"); if(index > 0) { pid = Integer.parseInt(info.substring(0, index)); } return pid; } public static String getRunTimeInfo() { RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean(); String info = runtime.getName(); return info; } public static String getRocketMqUniqeInstanceName() { return "pid" + getPid() + "_index" + index.incrementAndGet(); }}
阅读全文
0 0
- RocketMQ与Spring集成
- spring集成rocketmq
- 阿里RocketMq试用记录+简单的Spring集成
- 阿里RocketMq试用记录+简单的Spring集成
- Tapestry3 与 Spring 集成
- struts2.与spring集成
- CXF与spring集成
- CXF与spring集成
- CXF与spring集成
- struts2.与spring集成
- CXF与spring集成
- CXF与spring集成
- Spring 与Aspectj集成
- flex与spring集成
- Struts2与Spring集成
- Spring与Struts集成
- Spring与DWR集成
- Spring与Struts2集成
- ElasticSearch映射和分析
- leetcode 306. Additive Number 一个典型的DFS深度优先遍地问题
- Ubuntu环境下安装GPU版本的caffe
- bzoj 1056 && 1862: [Zjoi2006]GameZ游戏排名系统(Treap+Hash)
- android 模拟window运行环境
- RocketMQ与Spring集成
- java用ffmpeg插件来捕获视频第一帧
- 【牛客网】直通bat-面试算法精品课_第2章 排序 2.13 小范围排序练习题(JAVA版)
- Spring MVC环境下用poi技术实现Excel的导入导出
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 初窥javaScrit权威指南,第三章类型、值和变量(2)
- docker常用命令 解析
- BZOJ 3668:位运算
- xbanner