关闭

七牛-异步队列

标签: 七牛
224人阅读 评论(0) 收藏 举报

1.七牛的异步队列是这样的模型:上传的时候构造uptoken的时候增加notifyQueue,notifyMessage,notifyMessageType这几个参数,即通知队列名,通知队列信息,通知信息格式。(通知队列需要提前获取的,是七牛提供的,不能自己生成)

2.上传之后,客户服务器向七牛服务器发起请求,这时候七牛服务器反馈通知队列的信息给业务服务器。

ps:以目前的版本是修改下Auth类中的参数,将notifyQueue,notifyMessage,notifyMessageType添加进去。

举例:

import com.qiniu.common.QiniuException;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.junit.Test;
import java.io.IOException;

public class NotifyQueue
{
    //设置好账号的ACCESS_KEY和SECRET_KEY
    String ak = "";
    String sk = "";
    //要上传的空间
    String bucketname = "test";
    //上传到七牛后保存的文件名
    String key = "5ee2613d-3e1c-478c-b369-cf96c464ea53.png";
    //上传文件的路径
    String FilePath = "/Users/Jun/work/111.jpeg";

    //密钥配置
    Auth auth = Auth.create(ak, sk);
    //创建上传对象
    UploadManager uploadManager = new UploadManager();

    //简单上传,使用默认策略,只需要设置上传的空间名就可以了
    //**这个队列名是要七牛提供的**
    public String getUpToken(){
        return auth.uploadToken(bucketname,null,3600,new StringMap().put("notifyQueue","lilanjun").put("notifyMessage","bucket=$(bucket)&key=$(key)&time=$(time)").put("notifyMessageType","application/json"));
    }
    @Test
    public void test1()
    {
        try {
            //调用put方法上传
            System.out.println(getUpToken());
            com.qiniu.http.Response res = uploadManager.put(FilePath,key, getUpToken());
            //打印返回的信息
            System.out.println(res.bodyString());
        } catch (QiniuException e) {
            com.qiniu.http.Response r = e.response;
            // 请求失败时打印的异常的信息
            System.out.println(r.toString());
            try {
                //响应的文本信息
                System.out.println(r.bodyString());
            } catch (QiniuException e1) {
                //ignore
            }
        }
    }
    //GET /queues/<QueueName>/consume?position=<Position>&limit=<Limit>
    //Authorization: <UserToken>
    @Test
    public void test2() throws IOException
    {

        String str = "/queues/lilanjun/consume?position=null&limit=500\n";
        String access_token =  auth.sign(str);

        String url = "http://api.qiniu.com/queues/lilanjun/consume?position=null&limit=500";
        OkHttpClient client = new OkHttpClient();

        Request request = new Request.Builder().url(url).
                addHeader("Content-Type","application/json")
                .addHeader("Authorization","QBox "+access_token)
                .build();
        Response response = client.newCall(request).execute();
        if (response.isSuccessful())
        {
            System.out.println(response.body().string());
        }
        else {
            throw new IOException("Unexpected code " + response);
        }
    }
}
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15094次
    • 积分:651
    • 等级:
    • 排名:千里之外
    • 原创:53篇
    • 转载:2篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论