rocketMq消息的发送和消息消费

###一.消息推送
```java
public void pushMessage() {
String message = "推送消息内容!";
try {
DefaultMQProducer producer = new DefaultMQProducer(producerGroup);
// 设置NameServer地址
producer.setNamesrvAddr("服务器地址+端口号");
producer.setInstanceName("producer");
// 只需要在发送前初始化一次
producer.start();
// 构建消息实体

  1. Message msg = new Message(topic,// topic
  2. tag,// tag
  3. message.getBytes()// body
  4. );
  5. SendResult sendResult = producer.send(msg);
  6. System.out.printf("%s%n", sendResult);
  7. producer.shutdown();
  8. } catch (Exception ex) {
  9. ex.printStackTrace();
  10. }

}


  1. ###二.消息消费
  2. ```java
  3. @Autowired
  4. private MessageReceiveService messageReceiveService;
  5. //====好差评的服务器地址和端口=====
  6. @Value("${app.message.address}")
  7. private String address;
  8. //====好差评的topic=====
  9. @Value("${app.message.topic}")
  10. private String topic;
  11. //====好差评的组名=====
  12. @Value("${app.message.groupName}")
  13. private String consumerGroup;
  14. /**
  15. * 开始消费rocketMQ消息
  16. */
  17. @PostConstruct
  18. public void init() {
  19. try {
  20. DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(consumerGroup);
  21. consumer.setNamesrvAddr(address);
  22. consumer.subscribe(topic, "*");
  23. consumer.registerMessageListener(messageReceiveService);
  24. consumer.start();
  25. logger.info("rocketMQ consumer start");
  26. } catch (Exception e) {
  27. logger.error("reocketMQ consumer start error!", e);
  28. e.printStackTrace();
  29. }
  30. }
  1. @Service
  2. public class MessageReceiveService implements MessageListenerConcurrently {
  3. private static Logger logger = LoggerFactory.getLogger(MessageReceiveService.class);
  4. @Value("${accept_system_interface}")
  5. private String acceptSystemInterface;
  6. /**
  7. * 消费rocketMQ上的消息
  8. *
  9. * @param msgs rocketMQ消息
  10. * @param context 消息消费上下文
  11. * @return 消息处理状态
  12. */
  13. @Override
  14. public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
  15. // 判断消息类型
  16. return handleHcpMessage(msgs, context);
  17. }
  18. /**
  19. * <p>好差评消息消费</p>
  20. *
  21. * @param msgs 当前消息(组)
  22. * @param context 消息消费上下文
  23. */
  24. @Transactional(rollbackFor = {RuntimeException.class})
  25. private ConsumeConcurrentlyStatus handleHcpMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
  26. for (MessageExt msg : msgs) {
  27. // 消息校验与序列化
  28. String message = null;
  29. try {
  30. //获得消息的内容,转utf-8防止出现乱码
  31. message = new String(msg.getBody(),"utf-8");
  32. }catch (Exception e){
  33. e.printStackTrace();
  34. errorLogSave(message,"当前消息转化utf-8出现异常信息");
  35. return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
  36. }
  37. //对消息进行对应的操作
  38. ...
  39. }
  40. return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
  41. }

rocketMq消息的发送和消息消费的更多相关文章

  1. springboot项目整合rabbitMq涉及消息的发送确认,消息的消费确认机制,延时队列的实现

    1.引入maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...

  2. RabbitMQ,RocketMQ,Kafka 事务性,消息丢失和消息重复发送的处理策略

    消息队列常见问题处理 分布式事务 什么是分布式事务 常见的分布式事务解决方案 基于 MQ 实现的分布式事务 本地消息表-最终一致性 MQ事务-最终一致性 RocketMQ中如何处理事务 Kafka中如 ...

  3. Kafka消息重新发送

    Kafka消息重新发送   1.  使用kafka消息队列做消息的发布.订阅,如果consumer端消费出问题,导致数据并没有消费,此时不需要担心,数据并不会立刻丢失,kafka会把数据在服务器的磁盘 ...

  4. Win32窗口消息机制 x Android消息机制 x 异步执行

    如果你开发过Win32窗口程序,那么当你看到android代码到处都有的mHandler.sendEmptyMessage和 private final Handler mHandler = new ...

  5. 如何在优雅地Spring 中实现消息的发送和消费

    本文将对rocktmq-spring-boot的设计实现做一个简单的介绍,读者可以通过本文了解将RocketMQ Client端集成为spring-boot-starter框架的开发细节,然后通过一个 ...

  6. 转 Kafka、RabbitMQ、RocketMQ等消息中间件的对比 —— 消息发送性能和优势

    Kafka.RabbitMQ.RocketMQ等消息中间件的对比 —— 消息发送性能和优势 引言 分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦.现在开源的消息中间件有很多,前 ...

  7. RocketMQ(6)---发送普通消息(三种方式)

    发送普通消息(三种方式) RocketMQ 发送普通消息有三种实现方式:可靠同步发送.可靠异步发送.单向(Oneway)发送. 注意 :顺序消息只支持可靠同步发送. GitHub地址: https:/ ...

  8. Spring boot实战项目整合阿里云RocketMQ (非开源版)消息队列实现发送普通消息,延时消息 --附代码

    一.为什么选择RocketMQ消息队列? 首先RocketMQ是阿里巴巴自研出来的,也已开源.其性能和稳定性从双11就能看出来,借用阿里的一句官方介绍:历年双 11 购物狂欢节零点千万级 TPS.万亿 ...

  9. 消息队列(七)--- RocketMQ延时发送和消息重试(半原创)

    本文图片和部分总结来自于参考资料,半原创,侵删 问题 Rocketmq 重试是否有超时问题,假如超时了如何解决,是重新发送消息呢?还是一直等待 假如某个 msg 进入了重试队列(%RETRY_XXX% ...

随机推荐

  1. python下vs的使用

    part 1:导入pygame包 在python环境下:视图---其他窗口--python环境,选择从pypi安装pygame

  2. Appium Python核心API

    adb命令模拟按键事件 :http://blog.sina.com.cn/s/blog_68f262210102vc1b.html

  3. 面试必会之ArrayList源码分析&手写ArrayList

    简介 ArrayList是我们开发中非常常用的数据存储容器之一,其底层是数组实现的,我们可以在集合中存储任意类型的数据,ArrayList是线程不安全的,非常适合用于对元素进行查找,效率非常高. 线程 ...

  4. http range request

    range request: 要求实现该功能需要指定下载的实体范围

  5. 5.13T1Send 题(send)

    Send 题(send) [题目描述] 某个国家有

  6. Mybatis源码学习之DataSource(七)_1

    简述 在数据持久层中,数据源是一个非常重要的组件,其性能直接关系到整个数据持久层的性能.在实践中比较常见的第三方数据源组件有Apache Common DBCP.C3P0.Proxool等,MyBat ...

  7. python3连接redis数据库

    1.python想操作redis,需要安装第三方模块(我是在windows下进行操作的) pip install redis 2.连接数据库 #coding:utf-8 import redis r  ...

  8. 如何选CDN:互联网大直播时代的CDN选择指南

    转: 如何选CDN:互联网大直播时代的CDN选择指南 from:  http://www.chnvideo.com/blog-classic-cdn.html SRS 编码器   如何选CDN:互联网 ...

  9. 【软件工程】Beta版本演示

    团队信息 队名:女生都队 组长博客: 博客链接 成员 学号 史恩泽(组长) 031702122 施金海 031702121 阮君曦 031702116 陈银山 031702137 李季城 031702 ...

  10. polya定理,环形涂色

    环形涂色裸题 #include<iostream> #include<cstdio> #include<algorithm> #include<vector& ...