`
liudunxu2
  • 浏览: 32007 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
文章分类
社区版块
存档分类
最新评论

metaq使用memcache作为消费者去重的风险

 
阅读更多
metaq使用的是消费者分组+offset作为判断去重标志的key的,代码如下:
        private String cacheKey(final Long id, String group) {
            return group + id;
        }
其中id为服务端传递过来的msgid,生成规则可以看http://blog.csdn.net/liudunxu123/article/details/18009091

使用memcached并不能完全的杜绝相同消费者分组的多个进程的重复消费,原因如下:
一种情况如下:
两个相同分组的消费者进程,消费同一条消息,同时运行到如下函数:
        private boolean isProcessed(final Long id, String group) {
            if (messageIdCache != null) {
                return messageIdCache.get(this.cacheKey(id, group)) != null;
            }
            else {
                return false;
            }
        }


会发现当前的key是不存在的,还是会重复消费两次。
不过metaq本身消息重复消费的情况就微乎其微,同时运行到相同函数的情况就更少了。但是需要注意这种情况
分享到:
评论

相关推荐

    metamorphosis(metaq)

    3. 消费者:消费者订阅感兴趣的Topic,从MetaQ服务器拉取或接收消息。消费者可以设置为推拉模式,推模式下,服务器主动推送消息;拉模式下,消费者按需主动请求。 4. 消息确认:MetaQ支持消息确认机制,消费者在...

    Metaq原理与应用

    - **集群消费**:Consumer Group 内的实例平均分摊消息消费,类似于 JMS 中的点对点消息传递,保证每条消息只有一个消费者,且消费者和发送者之间无时间依赖性。 - **主动消费**:消费者主动向 Broker 请求消息,...

    metaQ向spark传数据

    生产者将数据以消息的形式发布到MetaQ,而消费者则可以从队列中消费这些消息。这种模式使得数据处理变得异步,可以有效地解耦生产者和消费者,提高系统的可扩展性。 接下来,我们关注如何将MetaQ中的数据接入Spark...

    metaq-server-1.4.6.2.tar.gz

    2. Consumer:消费者从MetaQ Server订阅并消费消息,同样通过API接口与Server交互。 3. Broker:作为MetaQ的核心组件,负责存储和转发消息,实现消息的持久化和高可用。 4. Controller:管理整个MetaQ集群,监控...

    metaq-server-1.4.6.2客户端+服务端

    4. **主题与队列**:MetaQ采用主题(Topic)和队列(Queue)的概念,允许多个消费者并行消费同一主题的不同队列中的消息,提高消息处理效率。 5. **订阅模型**:支持多种订阅模式,包括集群订阅(Cluster)、广播...

    metaQ的安装包

    - 生产者和消费者开发:MetaQ 提供了 Java、Python 等语言的 SDK,开发者可以使用这些 SDK 创建生产者和消费者来发送和接收消息。 - 主题与队列:在 MetaQ 中,消息被组织在主题(Topic)下,每个主题可以有多个...

    Metaq详细手册.docx

    4. **分布式架构**:Metaq支持分布式部署,生产者、服务器和消费者都可以分布在网络的不同节点上,提供了良好的扩展性和容错能力。 5. **增强特性**: - **Java重写**:Metaq采用Java语言完全重写,利用高效的协议...

    Metaq在JDk 7下的异常及解决方案

    异常的根本原因在于,Metaq的代码设计依赖于`DirectByteBuffer`的私有方法`viewedBuffer()`,而在JDK 7的某个更新版本中,这个方法的访问权限被限制,仅限于`java.nio`包内部使用。当Metaq在JDK 7环境下运行时,由于...

    MetaQ 分布式消息服务中间件.pdf

    具体而言,消费者主动从MetaQ拉取数据,解析成消息并进行消费。MetaQ的架构设计中,Broker集群采用了主从模式,以确保高可用性。消费者通过负载均衡的方式连接到Broker集群,并从中读取数据,而生产者(Producer)则...

    metaq-server-1.4.6.2.zip 和原版一样就是换了个名字

    它采用了发布/订阅(Publish/Subscribe)模型,允许生产者发送消息到主题(Topic),而消费者则订阅感兴趣的主题来接收消息。这种设计模式使得消息传递具有解耦合和异步处理的优点,能够有效提升系统的响应速度和...

    metaq消息中间件服务端、客户端资源汇集

    Metamorphosis是淘宝开源的一个Java消息中间件,他类似apache-kafka,但不是一个简单的山寨拷贝,而是做了很多改进和优化,项目的主页在淘蝌蚪上。服务端、客户端、javadoc都包含在内。

    ZooKeeper典型应用场景

    - Dubbo框架使用ZooKeeper作为服务注册和发现的平台,服务提供者向/dubbo/${serviceName}/providers目录写入自身信息,消费者通过服务名查找提供者地址。 ZooKeeper的这些应用场景体现了其在分布式环境中的核心...

    阿里rocketMQ

    2. **Consumer**:消费者是消息的接收方,可以从RocketMQ Broker拉取或订阅消息。消费者有两种消费模式:Push模式和Pull模式。Push模式下,消息由Broker主动推送给消费者;Pull模式下,消费者主动从Broker拉取消息。...

    ZooKeeper应用场景

    1. **消息中间件中的负载均衡**:在消息中间件(如KafkaMQ或MetaQ)中,生产者和消费者之间需要进行有效的负载均衡。通过在ZooKeeper中注册服务实例信息,生产者可以根据这些信息选择合适的节点进行消息发布,而消费...

    kafka课堂讲义.docx

    4. **消费者组(Consumer Group)**:消费者订阅主题,并以组的形式工作,同一组内的消费者会互相竞争消息,确保每条消息只被一个消费者处理。 5. **消费者(Consumer)**:消费主题中的消息,可以属于一个消费者组...

    Storm项目:流数据监控(下)

    该文档为storm模拟项目系列文档之一,...此外,还写了MetaQ与storm的生产者接口,即MetaqBolt指定Topic将数据写入Metaq中供其他业务系统继续使用。好了文档说明就这些了,代码马上会随文档更新(通常情况下,代码调试成

    zookeeper应用场景

    例如,Dubbo框架使用ZooKeeper作为服务注册与发现的中心,服务提供者启动时将自己的URL发布到ZK,而服务消费者则通过查询ZK获取服务提供者的地址,实现服务的动态发现和调用。 除了上述应用场景,ZooKeeper还有其他...

    ZooKeeper典型应用场景.docx

    比如LinkedIn的Kafka和阿里的MetaQ都利用ZooKeeper来分配生产者和消费者的负载。生产者通过ZK获取分区列表并进行轮询发送,而消费者则根据ZK上的信息进行消费任务的重新分配,确保在消费者故障或重启时,负载均衡能...

Global site tag (gtag.js) - Google Analytics