`
cywhoyi
  • 浏览: 420969 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

支持分布式的callback

 
阅读更多

项目背景:

       之前在某次培训的分享中,谈到rxjava、vertx等开源框架,也了解到callback概念,在分享的中某位童鞋谈到分布式下callback如何处理,说实话在当时的环境能够通过几句话描述callback都比较困难,更何况描述分布式下的callback,所以本文我想通过基于jgroup的方式,更好阐述我的理解如何处理分布式下的callback。

 

 

 



 

 

public class ReplyingCallback implements CommandCallback<Object, Object> {

    private final JChannel channel;
    private final Serializer serializer;

    private static final Logger logger = LoggerFactory.getLogger(ReplyingCallback.class);
    private final Address address;

    public ReplyingCallback(JChannel channel, Address address, Serializer serializer) {
        this.address = address;
        this.channel = channel;
        this.serializer = serializer;
    }

    @Override
    public void onSend(CommandMessage<?> commandMessage, Object result) {
        try {
            channel.send(address, new ReplyMessage(commandMessage.getIdentifier(),
                                                   result,
                                                   null, serializer));
        } catch (Exception e) {
            logger.error("Unable to send reply to command [name: {}, id: {}]. ",
                         commandMessage.getCommandName(), commandMessage.getIdentifier(), e);
            throw new CommandResponseProcessingFailedException(String.format(
                    "An error occurred while attempting to process command response of type : %s, Exception Message: %s",
                    result.getClass().getName(), e.getMessage()), e);
        }
    }

 

 

 

 

  • 大小: 78.2 KB
分享到:
评论

相关推荐

    C++基于redis的分布式锁redisAPI

    尽管Redis提供了原生的协议支持,但直接操作原始TCP套接字并不方便,因此通常会使用如`hiredis`这样的客户端库。然而,这里提到的是"需要boost库",这可能是指使用`cpp_redis`库,它是一个基于Boost.Asio的C++ Redis...

    Delphi DataSnap CallBack

    DataSnap使用TSQLDataModule作为服务器组件,它包含数据库连接和业务逻辑,同时支持REST和TCP/IP协议进行通信。 **二、DataSnap CallBack原理** DataSnap CallBack机制允许服务器在执行某些操作后主动调用客户端的...

    基于Go的分布式游戏服务器框架mqant.zip

    特性分模块机制基于 golang 协程,开发过程全程做到无 callback 回调,代码可读性更高RPC 支持本地和远程自动切换远程 RPC 默认使用 rabbitmq,未来可以添加更多种类的通信协议网关采用 MQTT 协议,无需再开发客户端...

    高可用分布式流数据存储架构设计.pdf

    流数据存储平台旨在整合这些服务,提供一个统一的、有序的、只追加(Append-only)的数据存储方案,支持尾部写入和顺序读取,确保数据的高性能、可靠性以及顺序一致性。此外,这种架构还具备近乎无限的扩展能力,...

    keras-callback-patch

    3. **模型并行和分布式训练支持**:对于大规模模型,`keras-callback-patch`可能增加了对多GPU训练或分布式训练的支持,通过回调来协调不同设备间的模型更新。 4. **增强日志与调试**:可能包含更好的日志记录和...

    lambdaws-instant-api:从任何 Javascript 函数创建可扩展的分布式 API 端点

    从任何 Javascript 函数创建可扩展的分布式公共 API 端点。 由 AWS Lambda 和 Lambdaws 提供支持。 用法 安装 npm install lambdaws-instant-api或克隆这个 repo。 创建即时函数 var lamdawsInstantApi = require ...

    PyPI 官网下载 | PyCK-0.9.7.3.tar.gz

    3. **使用PyCK功能**:根据需求调用相应的API,如创建节点`client.create('/my_node', 'data')`,读取数据`data = client.get('/my_node')`,或设置监听器`client.exists('/my_node', watch=my_callback)`。...

    PySipder是一个Python爬虫程序.rar

    分布式架构 示例代码: from pyspider.libs.base_handler import * class Handler(BaseHandler): crawl_config = { } @every(minutes=24 * 60) def on_start(self): self.crawl('http://scrapy.org/', ...

    PyPI 官网下载 | JSTimers-1.1.tar.gz

    它提供了一种可靠的分布式数据一致性解决方案,支持配置管理、命名服务、分布式同步和组服务等。在分布式系统中,Zookeeper 可用于管理元数据、实现服务发现、维护锁服务等,确保在多节点间的协同工作。 **云原生...

    dubbo-2.5.7支持jdk8

    例如,我们可以用Lambda表达式来替代传统的实现Callback接口的方式,使得代码更加紧凑且易于理解。 此外,Stream API的引入也为数据处理提供了新的可能。在处理大量服务实例或者调用结果时,可以利用Stream API进行...

    PyPI 官网下载 | lesson1module-1.3.0.tar.gz

    同时,由于是云原生,它可能支持容器化部署,易于与其他云服务集成,并具有良好的扩展性和容错性。 在实际使用中,开发者首先需要通过Python的pip工具从PyPI上安装这个库,例如: ```bash pip install lesson1...

    jQuery分布式账户设置代码

    7. **事件处理**:jQuery的事件处理功能强大,如`$(selector).on('event', callback)`用于绑定事件监听器,`$(selector).off('event')`则可以移除事件监听。在账户设置流程中,这用于响应用户的操作,如点击按钮、填...

    ThinkPHP v3.0.1 开发板.zip

    库导入、模版引擎、查询语言、自动验证、视图模型、项目编译、缓存机制、SEO支持、分布式数据库、多数据库连接和切换、认证机制和扩展性方面均有独特的 表现。   使用ThinkPHP,你可以更方便和快捷的开发和部署...

    会话WCF服务 -> C# WCF COM 客户端 双工通信 -> C++通过COM调用C# WCF客户端

    在IT行业中,Windows Communication Foundation(WCF)是微软提供的一种用于构建分布式应用程序的服务框架,它支持多种通信协议和模式,包括双向(双工)通信。本文将深入探讨如何利用C#实现一个WCF服务,并创建一个...

    ZKclientDemo源码

    Zookeeper的大部分操作都支持异步模式,这意味着你可以提交一个操作并立即得到一个Future对象,然后在其他地方处理结果。例如,异步创建节点: ```java AsyncCallback.Create2Callback callback = new ...

    基于 PubNub Python 的用于核心 Python、 Twsted 和 Tornell 的 API

    PubNub 是一个全球分布式的实时消息推送服务,它提供了简单易用的 API,使得开发者可以轻松地在各种平台和语言上实现实时通信功能。在这个主题中,我们将深入探讨如何利用 PubNub 的 Python SDK 来构建核心 Python、...

    xxl-sso-master.zip

    XXL-SSO 是一个专为此目的设计的开源框架,它提供了轻量级、分布式、跨域以及对Cookie和Token的支持,适用于Web和APP应用。 1. **轻量级**:XXL-SSO 设计简洁,易于理解和部署,降低了对系统资源的需求,使得小型到...

    HBase Coprocessor 优化与实验

    HBase是一种非关系型、面向列的分布式数据库系统,它基于Hadoop之上构建,旨在为大规模数据提供高可靠、高性能的支持。HBase的核心优势在于其能够处理海量数据的同时保持较高的访问速度。这得益于它的数据分布策略...

Global site tag (gtag.js) - Google Analytics