java rocketmq 生产者如何取得消费者的消费结果

比如说:我项目的服务接口,需要给调用者返回一个是否成功结果。因为可能并发量比较大,用rocketmq来流量削峰。我将生产者写入到接口中,每次调这个接口,生产者发送消息,消费者监听,并处理接口的实际业务。但是如何返回给生产者处理结果?我没找到具体代码方法。
还是说我上面做的方法,是不可行的?求解答

0

3个回答

首先要明白消息队列是用于什么场景的;
绝大部分用于削峰和解耦,也有用于处理分布式事务!
然后再想想削峰的目的是什么,削峰是用于当应用处理不过来过大的并发请求时,将请求存于队列中,用单个或多个消费者来处理请求!

这时候想要拿到请求怎么办呢?
1.每个消费者处理完成请求,再发送消息到消息队列中,你的生产者那方再实现消费者来消费这些处理结果信息;
然后处理你的逻辑!
2.将处理结果存于缓存等高性能组件中,通过轮询的方式获取任务处理结果

不管什么方式,你的请求方都应该是在你将请求消息发到队列后立即返回的!消息结果可以用推送的方式告知(移动端的话),也可以让请求方每个几秒轮询一次
处理结果;

希望对你有帮助...

0
w172087242
little_how 回复qq_39348131: 这真的要看具体业务,和你们的整体架构了!过段时间如果有空准备写个使用消息中间件(kafka)的例子,便于不知道怎么使用消息中间的朋友入门之用!
大约一年之前 回复
qq_39348131
qq_39348131 回复w172087242: 了解了,问一下,如何将请求缓存到队列,假如一秒钟有一万次请求,服务器一秒处理500条,其它的放入队列。代码应该是写在接口前的,具体是怎么写的呢,或者说写在哪,是怎么实现的呢
大约一年之前 回复
w172087242
little_how 回复qq_39348131: 一般的削峰都是在处理促销这样的业务场景,因为这个瞬时峰值会增高!而像你这样的平常业务是需要估算你们容量的,根据容量的不同,将你们的webservice分布式部署,容量逐步增加,那么就相应的增加你的机器。因为如果你服务的平均吞吐量都不够了,那么你不管增么削峰,任务都会不断累加,很容易撑爆服务器的
大约一年之前 回复
qq_39348131
qq_39348131 非常感谢你的回答。我现在大概明白了。实际上我们有一个webservice接口,组长说以后可能调这个接口的人会越来越多,并发量较大。所以让我了解一下mq,但mq可能更适合处理一些延时性的业务,不太适合需要实时返回结果。对于这种实时的接口削峰你有什么技术推荐吗
大约一年之前 回复

非常感谢你的回答。我现在大概明白了。实际上我们有一个webservice接口,组长说以后可能调这个接口的人会越来越多,并发量较大。所以让我了解一下mq,但mq可能更适合处理一些延时性的业务,不太适合需要实时返回结果。对于这种实时的接口削峰你有什么技术推荐吗

0

你的问题思路就不对,一般用rabbitmq都是异步调用,就是说发送消息的人,不会想知道别人什么时候处理,处理完成了没有。如果你想知道别人处理咋样了,应该使用同步调用,不要使用rabbitmq。如果是两个进程之间,可以考虑RPC。

0
qq_39348131
qq_39348131 问一下,具体到代码是怎么用rocketmq实现流量削峰?是在我的服务接口类中 注入生产者,然后接口中 调用生产者的send方法发送消息到队列的吗
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
RocketMQ 生产者与消费者的封装
一、抽象消费类封装: public abstract class Consumer { protected final Logger logger = LoggerFactory.getLogger(getClass()); protected DefaultMQPushConsumer defaultMQPushConsumer; @Value("${rocket...
rocketMQ生产者和消费者
简单写一个MQ的生产者和消费者。生产者生产4个topic。消费者订阅消费,多线程启动4个线程,每个线程新建一个消费者来消费一个topic的数据。rocketMQ本身就是多线程的,设置每个消费者的线程数为5个。例子如下: 生产者代码如下: import javax.annotation.PreDestroy; import com.alibaba.rocketmq.cli
rocketmq java调用生产者生产成功,消费者消费不到的问题
文章目录问题解决总结 通过java调用出现问题: producer 生产数据正常,可是consumer 消费不到 producer日志截图 起初认为是之前其他的consumer偷偷的消费掉了,为了查看到底有没有其他的consumer偷偷的消费掉,希望通过命令行找到消息的消费轨迹,想到rocketmq有mqadmin,下面的命令摘自博文:https://www.cnblogs.com/keving...
RocketMq案例,生产者,消费者,消息订阅
1、RocketMq集群配置参考:http://blog.csdn.net/tototuzuoquan/article/details/78314572使用的rocketmq的ip等是上面博文提及的ip等内容2、创建RocketMq工程工程目录结构如下: 3、编写pom.xml文件<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http
RocketMQ 生产者与消费者的封装与调用
一、抽象消费类封装: package cn.shaker.media.basic.rocketMq.consumer; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; ...
Rocketmq生产者和push消费者demo
1.Rocketmq生产者 public class Producer { public static void main(String[] args) throws MQClientException{ /** * 一个应用创建一个Producer,由应用来维护此对象,可以设置为全局对象或者单例 * 注意:ProducerGroupN
rocketmq 消费者无法消费问题排查
问题: rocketmq 消费者无法消费   场景: 消息能正常到达mq 重启后消息能正常消费   判断: 1.mq消费者线程卡死(业务代码卡住,导致消费线程无法继续消费) 2.mq内核线程卡死,无法读取mq消息   验证:使用jdk工具jvisualvm查看,一眼便知       ...
生产者与消费者生产者与消费者
生产者与消费者生产者与消费者生产者与消费者生产者与消费者生产者与消费者
RocketMQ生产者和消费者关键概念总结
生产者: 每隔30S向Master发送心跳,心跳信息内只包含producerGroup名称,同时上传FilterClassSource 每隔30S从Namesrv获取最新的TopicRouteData,提取信息封装成TopicPuhlishInfo 根据最新的TopicRouteData,定时更新持有的Broker列表,清空下线的Broker 当未开启延迟容错机制(默认)情形下,轮流按顺序向所...
RocketMQ(一) 生产者和消费者完整示例
生产者和消费者,发消息和接收消息,完整示例    RocketMQ是阿里巴巴在2012年开源的分布式消息中间件,目前已经捐赠给Apache基金会,已经于2016年11月成为 Apache 孵化项目,相信RocketMQ的未来会发挥着越来越大的作用,将有更多的开发者因此受益。         本文仅对RocketMQ的简单实用做入门性介绍,不对RocketMQ的底层原理进行深入介绍,后续文章将...
Rocketmq 消费者组 顺序、平均消费实现原理
1.测试环境: broker :1master,1slave producer: 1 consumer:3 2.架构图: 3.实现功能 Producer 投递到Broker 的消息,要实现顺序消费,而且Consumer 消费组C1,C2,C3要实现负载均衡消费 4.技术原理 Broker 的里面的Topic(消息逻辑存储单元)包含多个Queue(假...
RocketMQ原理学习--消费者消费消息
        在之前的一篇博客《RocketMQ原理学习--消息类型》中我们有介绍过RocketMQ的消息类型,这篇博客我们简单介绍一下RocketMQ消费者是如何消费消息的。 一、Pull or Push         简单来说RocketMQ给我们提供了两种消息消费方式,Pull模式和Push模式,简单理解我们可能会认为Pull模式是消费者主动去拉取消息,Push模式是RocketMQ...
生产者/消费者模式 (java)
生产者/消费者模式要求在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。 消费者线程从缓冲区中获得物品,然后释放缓冲区。 当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。 当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来。 优点: (1)解耦。假设生产
Java 生产者和消费者
模拟生产者和消费者
Java线程间的通信之消费者和生产者
Java官方的API提供了几种线程间的通信方法 在经典的生产者和消费者模式中,一般可以有三种实现方式 1、suspend(挂起)和resume(唤醒),此套方法官方已经弃用,原因是容易出现死锁 从而导致永久挂起,调用时需要注意先后顺序 2、wait(挂起)和notify(唤醒),在使用时必须在同步代码块中使用,并且需要注意先后顺序, 反正会出现永久等待的问题 3、p...
java 多线程 生产者与消费者
package com.jh.java.thread; /** * 模拟场景: * * 生产者和消费者 * 库存为0,首先开始生产,最大库存为100。库存将满时 开始消费。 * 消费到库存 不够时 则扩大再生产。 * 如此反复 * @author JIHAN * */ public class MyTest3 { public ...
生产者与消费者-示例代码Java
/** * Copyright (C), 2018-2019, LMaWC * FileName: Restaurant * Author: neo * Date: 2019/3/19 16:06 * Description: 生产者与消费者示例 * History: * &lt;author&gt; &lt;time&gt; &lt...
Java消费者生产者问题
/** * 一个线程作为生产者,一个线程作为消费者。生产者和消费者在同时执行。 * 生产者每生产一次消费者就消费一次。生产和消费的数量用随机数来表示。 * 要求:生产者的数量和上次消费后的剩余数量和不大于1000. * sleep:可以指定休眠的时间,如果没有其他操作,那么到点自然醒。 * 如果sleep有锁资源,那么不释放代码执行权,sleep是Thread的类方法 * wait:...
Java 生产者与消费者
摸索了一个晚上,有点懂了,结合网上的例子,然后自己写一个。 [code=&quot;java&quot;] public class Info { private int id=0; public synchronized void increace(String name,boolean flag){ System.out.println(&quot;准备生产。。。&quot;); try { T...
生产者和消费者 Java 代码实现
生产者消费者一共有五种方式可以进行实现: wait() / notify()方法 await() / signal()方法 BlockingQueue阻塞队列方法 Semaphore方法 PipedInputStream / PipedOutputStream** 1、wait() / notify()方法 代码示例: /** * description: 通过...
java多线程(生产者与消费者)
生产者消费者模式是java多线程经典的安全,它用到了同步,资源共享,wait,notify等技术。
生产者与消费者 java实现
生产者与消费者的问题一直都是初级编程这需要了解的内容。
java 生产者与消费者
用java语言编写的生产者与消费者,并附有相关的说明,特别是线程操作说明。
java实现生产者与消费者
写了一段生产者与消费者代码,有待改进package test;import java.util.Random;//商品缓冲池 class Buffer { private int[] NumberPool = null; private int size; //缓冲池大小 private volatile int head = 0; private volatile
Java实现生产者与消费者
生产者与消费者的线程实现问题分析可知:问题含有产品对象,产品池对象,消费者,生产者对象 产品对象 public class Product { int id; String name; Product(){} Product(int id,String name){ this.name=name; this.id=id; } public int getId() { r
java 消费者与生产者
原理: 生产者-消费者(producer-consumer)是共享一个公共的固定大小的 缓冲区。其中一个是生产者,用于将消息放入缓冲区;另外一个是消费者,用于从缓冲区中取出消息。问题出现在当缓冲区已经满了,而此时生产者还想向其中放入 一个新的数据项的情形,其解决方法是让生产者此时进行休眠,等待消费者从缓冲区中取走了一个或者多个数据后再去唤醒它。同样地,当缓冲区已经空了,而消费 者还想去取消息,...
JAVA生产者与消费者代码优化
Student.java package cn.itcast.productAndConsumer; public class Student { private String name; private int age; private boolean flag; public synchronized void setFun(String name, int age){ ...
生产者-消费者模型(Java)
第三节实验课 —— 生产者-消费者模型生产者-消费者模型一个模块产生数据,在另一个模块中处理数据。产生数据的模块称为生产者,处理数据的模块称为消费者。如果直接在消费者中暴露一个方法,供生产者调用来处理数据,这样在两者之间就有依赖关系(耦合),也不利于利用多线程提高产生数据和处理数据的效率(并发)。这种情况下引入一个数据缓冲,即生产者产生的数据会逐一放入缓冲区,消费者反复从缓冲区取出数据进行处理。同步
Java精讲:生产者-消费者
原文链接 更多教程 本文概要 生产者和消费者问题是线程模型中老生常谈的问题,也是面试中经常遇到的问题。光在Java中的实现方式多达数十种,更不用说加上其他语言的实现方式了。那么我们该如何学习呢? 本文会通过精讲wait()和notify()方法实现生产者-消费者模型,来学习生产者和消费者问题的原理。 目的是当你理解了最简单实现原理,再...
java线程生产者和消费者
文章目录线程生产者和消费者解决紊乱的问题解决生产一个消费多个的问题死锁线程的生命周期计时器 线程生产者和消费者 说明: 1.共享同一个数据。 2.有一个线程负责向该共享数据存放数据。—生产者 3.另一个线程负责从该数据空间中取出数据。—消费者 为什么生产者不直接把生产的数据交给消费者而非要一个共享区来完成这样的操作呢? 其实这样是为了解除耦合关系,即如果其中一方出现问题并不会影响另外一方。说具体点...
JAVA生产者与消费者问题
请自行写出一个关于生产者-消费者模型的多线程实例,并用流程图画出执行逻辑。 package entity;   import java.io.IOException; import java.nio.CharBuffer;   public classModel implements Runnable {         boolean flag;//true:执行生
Java生产者与消费者
Java的线程一直是初学者比较头疼的知识块,特别是线程的并发,而生产者消费者模式刚好是并发的经典,这两天去学习了下,做个笔记。 所谓生产者与消费者的模式,其不同点在与,两者中间多了一个容器,生产者生产完产品只需要放入容器中,消费者则从容器中取出产品消费,彼此不直接联系,达到了解耦的目的。
Java 生产者 消费者
谁能给出代码!!!rn线程 很不解啊!!
JAVA生产者和消费者的问题
最近有个项目,需要一个功能。即从提供的数据文件中读取数据,然后进行解析。由于读取较快,解析较慢。故使用一个线程进行数据读取,然后放到队列。开启多个线程从队列中读取数据并进行解析。rn消费者从队列里消费数据 rn例如 [code=java]while(true)rn //从队列取数据rn //消费数据rn[/code]rn问题:那么既然是while(true) 循环,那么我退出循环的临界点是什么? rn当消费者从队列中取不到数据时麽?(有可能生产者还没来得及放)
java版本的生产者与消费者
1.Customer.java 2.Productor.java 3.storage.java 代码有注释与关键点讲解.....
生产者与消费者 java线程
很 经 典 的 例 子
JAVA 生产者与消费者模式
自己一直对Java多线程似是而非,刚好最近项目上线,时间相对比较空闲,重新温习了一遍多线程。参考书是>。 以下自己动手写了一个生产者和消费者模式的代码。一共用了两种方法(synchronized 和 BlockingQueue)。Lock暂时没写。 一、synchronized 实现方法 1.先定义一个货物的实体Goods,用于生产者和消费者使用 package com.deshengzh
Java多线程-生产者与消费者
Java多线程生产者与消费者,准确说应该是“生产者-消费者-仓储”模型,使用了仓储,使得生产者消费者模型就显得更有说服力。 对于此模型,应该明确一下几点: 1、生产者仅仅在仓储未满时候生产,仓满则停止生产。 2、消费者仅仅在仓储有产品时候才能消费,仓空则等待。 3、当消费者发现仓储没产品可消费时候会通知生产者生产。 4、生产者在生产出可消费产品时候,应该通知等待的消费者去消费。一、仓库
Java实现的生产者和消费者
工厂类: import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class Depot { private int depotSize; // 仓库大小 pri
java消费者生产者问题
java消费者生产者问题 1.使用wait()和notify()模拟 2.使用BlockingQueue模拟