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

Gearman框架Java demo

 
阅读更多

说明:官网gearman.org反转字符串demo的java版本

1.环境:JDK1.7

所需jar包:java-gearman-service-0.6.6.jar(最新的jar包,用此jar包要求jdk7)

               slf4j-api-1.6.4.jar

               slf4j-simple-1.6.4.jar

2.代码:

  //client端代码

package com.broada.gearman;

import org.gearman.Gearman;
import org.gearman.GearmanClient;
import org.gearman.GearmanJobEvent;
import org.gearman.GearmanJobReturn;
import org.gearman.GearmanServer;

public class EchoClient {

    public static void main(String... args) throws InterruptedException {

            //创建一个Gearman实例
            Gearman gearman = Gearman.createGearman();

            //创建一个Gearman client             
            GearmanClient client = gearman.createGearmanClient();

            /*
             * 创建一个jobserver
             * 
             * Parameter 1: job server的IP地址
             * Parameter 2: job server监听的端口
             * 
             *job server收到client的job,并将其分发给注册worker
             *
             */
            GearmanServer server = gearman.createGearmanServer(
                            EchoWorker.ECHO_HOST, EchoWorker.ECHO_PORT);

            
             // 告诉客户端,提交工作时它可以连接到该服务器
             
            client.addServer(server);

            /*
             * 向job server提交工作
             * 
             * Parameter 1: gearman function名字
             * Parameter 2: 传送给job server和worker的数据
             * 
             * GearmanJobReturn返回job发热结果
             */
            GearmanJobReturn jobReturn = client.submitJob(
                            EchoWorker.ECHO_FUNCTION_NAME, ("Hello World!").getBytes());
            

            //遍历作业事件,直到我们打到最后文件             
            while (!jobReturn.isEOF()) {

                    //下一个作业事件
                    GearmanJobEvent event = jobReturn.poll();

                    switch (event.getEventType()) {

                    case GEARMAN_JOB_SUCCESS:     //job执行成功
                            System.out.println(new String(event.getData()));
                            break;
                    case GEARMAN_SUBMIT_FAIL:     //job提交失败
                    	
                    case GEARMAN_JOB_FAIL:        //job执行失败
                            System.err.println(event.getEventType() + ": "
                                            + new String(event.getData()));
                    default:
                    }

            }

            //关闭
            gearman.shutdown();
    }
}

 

//worker端代码

package com.broada.gearman;

import org.gearman.Gearman;
import org.gearman.GearmanFunction;
import org.gearman.GearmanFunctionCallback;
import org.gearman.GearmanServer;
import org.gearman.GearmanWorker;

public class EchoWorker implements GearmanFunction {

        //function name
        public static final String ECHO_FUNCTION_NAME = "reverse";

        //job server地址
        public static final String ECHO_HOST = "192.168.125.131";

        //job server监听的端口
        public static final int ECHO_PORT = 4730;

        public static void main(String... args) {

        	    //创建一个Gearman实例
                Gearman gearman = Gearman.createGearman();

                /*
                 * 创建一个jobserver
                 * 
                 * Parameter 1: job server的IP地址
                 * Parameter 2: job server监听的端口
                 * 
                 *job server收到client的job,并将其分发给注册worker
                 *
                 */
                GearmanServer server = gearman.createGearmanServer(
                                EchoWorker.ECHO_HOST, EchoWorker.ECHO_PORT);

                //创建一个Gearman的worker
                GearmanWorker worker = gearman.createGearmanWorker();

                //告诉工人如何执行工作(主要实现了GearmanFunction接口)
                worker.addFunction(EchoWorker.ECHO_FUNCTION_NAME, new EchoWorker());

                //worker连接服务器
                worker.addServer(server);
        }

		@Override
        public byte[] work(String function, byte[] data,
                        GearmanFunctionCallback callback) throws Exception {

                //work方法实现了GearmanFunction接口中的work方法,本实例中进行了字符串的反写
        	    if(data != null){
        	    	String str = new String(data);
            	    StringBuffer sb = new StringBuffer(str);
            	    return sb.reverse().toString().getBytes();
        	    }else{
        	    	return "未接收到data".getBytes();
        	    }
                
        }

}

 

*ECHO_HOST = "192.168.125.131"为安装了Gearman并开启geramand服务的主机地址

 *int ECHO_PORT = 4730默认端口为4730

分享到:
评论

相关推荐

    Gearman java APIs和一个小Demo

    本篇文章将深入探讨 Gearman 的 Java APIs,并通过一个小 Demo 展示其用法。 ### Gearman 的基本概念 1. **Worker**:工作进程,负责接收并执行 Gearman 服务器分发的任务。 2. **Client**:客户端,用于提交任务...

    gearman-java.zip_BadMagicException_Gearman java

    Gearman-Java是Java语言对Gearman的客户端库,它提供了与Gearman服务器通信的能力,用于分发工作负载或者执行异步任务。 在"gearman-java.zip_BadMagicException_Gearman java"这个问题中,`BadMagicException`是一...

    java-gearman-service(gearman-java-service)

    java实现gearman的job实现的jar包,包括gearman server,client和work客户端API

    java-gearman-service jar

    gearman的java库有两个,一个是gearman service ,一个是gearman java,相比来说service版本更好用一些,并且网上的教程一般是用的这个版本。因此我打好了gearman service的包提供给需要的开发者使用。

    java-gearman-service-0.6.6.zip

    java-gearman-service-0.6.6.zip 包,gearman分为3部分,client - server - worker,创建 java 版本的client和worker部分。 其实在gearman中,client和worker的编写不复杂,但是不同厂商提供的API是不大相同的,本...

    gearman下载gearman下载

    `gearman-java-0.04.jar`是Gearman Java客户端的编译后版本,包含预编译的Java类,可以直接在Java项目中作为依赖使用,无需自行编译源代码。通过引入这个jar文件,开发者可以轻松地在Java应用中调用Gearman的功能,...

    java-gearman-service-0.6.6.jar gearman java调度工具包

    Java Gearman Service 0.6.6 是一个用于Java开发的 Gearman 调度工具包,它提供了在Java环境中与Gearman服务器交互的能力。Gearman是一个通用的工作队列系统,设计用来解耦那些需要异步处理的任务,使得任务的发起者...

    gearman-java-0.6.jar

    实测可用

    gearman-java-0.5.jar

    实测可用

    Gearman PHP Extension

    Gearman是一个分发任务的程序框架,可以用在各种场合,与Hadoop相比,Gearman更偏向于任务分发功能。它的 任务分布非常 简单,简单得可以只需要用脚本即可完成。Gearman最初用于LiveJournal的图片resize功能,由于...

    gearman-java-0.5-sources.jar

    实测可用

    gearman-java-0.6-sources.jar

    实测可用

    java-gearman-service-0.6.6.jar

    java实现gearman的job实现的jar包,包括gearman server,client和work客户端API

    Gearman中文手册,Gearman中文详解,gearman手册chm

    Gearman中文手册,gearman手册chm,Gearman中文详解,分享gearman技术心得,主要是为了分享技术,所以不要大家的资源分。

    gearman 文档

    ### Gearman文档与集群计算框架的关键知识点 #### 一、Gearman概述 **Gearman**是一种分布式任务调度框架,主要用于跨机器或者同一机器上的不同进程之间分发任务。它允许开发者将任务分解并分配给一组工作节点...

    Gearman环境搭建资料

    总之,Gearman提供了一种灵活的框架,用于在分布式环境中处理任务,通过合理配置和使用,能够有效地提高系统的并发处理能力和响应速度。搭建和维护Gearman环境需要对Linux系统、网络编程以及相关库有一定的理解,但...

    GearMAN讲解及所带来的变革

    GearMAN是一个高效的分布式任务框架,最初设计用于解决Web2.0环境中图片处理等耗时任务的快速分配和执行问题。它的名字来源于“Generic Worker Manager”,意在成为一个通用的任务分发工具。GearMAN通过将任务分配给...

    Gearman C# API和示例

    总结一下,这个"Gearman C# API和示例"项目提供了一个C#开发者与Gearman服务交互的基础框架,涵盖了客户端和工作者的实现。通过学习和使用这个项目,你可以更好地理解和利用Gearman在分布式系统中的优势,提升你的...

    Laravel开发-php-gearman

    Gearman 是一个跨语言的、通用的任务调度框架,它可以将任务分发到多台服务器上,使得大规模应用可以有效地利用系统资源。 ### Gearman 的核心概念 1. **Worker**:工作进程,负责接收并执行 Gearman 服务器分发的...

    Laravel开发-laravel-gearman-rpc

    这个库提供了一个Laravel服务提供者和服务容器绑定,使得在Laravel框架内使用Gearman变得更加方便。 ** 安装与配置 ** 首先,你需要通过Composer安装`mhlavc/gearman`库: ```bash composer require mhlavc/...

Global site tag (gtag.js) - Google Analytics