• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java PutException类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中com.google.appengine.api.search.PutException的典型用法代码示例。如果您正苦于以下问题:Java PutException类的具体用法?Java PutException怎么用?Java PutException使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



PutException类属于com.google.appengine.api.search包,在下文中一共展示了PutException类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: indexApp

import com.google.appengine.api.search.PutException; //导入依赖的package包/类
/**
 * index gallery app into search index
 * @param app galleryapp
 */
public void indexApp (GalleryApp app) {
  // take the title, description, and the user name and index it
  // need to build up a string with all meta data
  String indexWords = app.getTitle()+" "+app.getDescription() + " " + app.getDeveloperName();
  // now create the doc
  Document doc = Document.newBuilder()
    .setId(String.valueOf(app.getGalleryAppId()))
    .addField(Field.newBuilder().setName("content").setText(indexWords))
    .build();

  Index index = getIndex();

  try {
    index.put(doc);
  } catch (PutException e) {
    if (StatusCode.TRANSIENT_ERROR.equals(e.getOperationResult().getCode())) {
        // retry putting the document
    }
  }
}
 
开发者ID:mit-cml,项目名称:appinventor-extensions,代码行数:25,代码来源:GallerySearchIndex.java


示例2: indexADocument

import com.google.appengine.api.search.PutException; //导入依赖的package包/类
/**
 * Put a given document into an index with the given indexName.
 * @param indexName The name of the index.
 * @param document A document to add.
 * @throws InterruptedException When Thread.sleep is interrupted.
 */
// [START putting_document_with_retry]
public static void indexADocument(String indexName, Document document)
    throws InterruptedException {
  IndexSpec indexSpec = IndexSpec.newBuilder().setName(indexName).build();
  Index index = SearchServiceFactory.getSearchService().getIndex(indexSpec);

  final int maxRetry = 3;
  int attempts = 0;
  int delay = 2;
  while (true) {
    try {
      index.put(document);
    } catch (PutException e) {
      if (StatusCode.TRANSIENT_ERROR.equals(e.getOperationResult().getCode())
          && ++attempts < maxRetry) { // retrying
        Thread.sleep(delay * 1000);
        delay *= 2; // easy exponential backoff
        continue;
      } else {
        throw e; // otherwise throw
      }
    }
    break;
  }
}
 
开发者ID:GoogleCloudPlatform,项目名称:java-docs-samples,代码行数:32,代码来源:Utils.java


示例3: indexADocument

import com.google.appengine.api.search.PutException; //导入依赖的package包/类
/**
 * Put a given document into an index with the given indexName.
 *
 * @param indexName The name of the index.
 * @param document A document to add.
 * @throws InterruptedException When Thread.sleep is interrupted.
 */
// [START putting_document_with_retry]
public static void indexADocument(String indexName, Document document)
    throws InterruptedException {
  IndexSpec indexSpec = IndexSpec.newBuilder().setName(indexName).build();
  Index index = SearchServiceFactory.getSearchService().getIndex(indexSpec);

  final int maxRetry = 3;
  int attempts = 0;
  int delay = 2;
  while (true) {
    try {
      index.put(document);
    } catch (PutException e) {
      if (StatusCode.TRANSIENT_ERROR.equals(e.getOperationResult().getCode())
          && ++attempts < maxRetry) { // retrying
        Thread.sleep(delay * 1000);
        delay *= 2; // easy exponential backoff
        continue;
      } else {
        throw e; // otherwise throw
      }
    }
    break;
  }
}
 
开发者ID:GoogleCloudPlatform,项目名称:java-docs-samples,代码行数:33,代码来源:Utils.java


示例4: indexDocument

import com.google.appengine.api.search.PutException; //导入依赖的package包/类
private static void indexDocument (String name, Document document,
		int retry) {
	do {
		try {
			getIndex(name).put(document);
			retry = 0;
		} catch (PutException e) {
			if (StatusCode.TRANSIENT_ERROR
					.equals(e.getOperationResult().getCode())) {
				retry--;
			} else {
				// if it is not a transient error we just stop
				retry = 0;
			}
		}
	} while (retry > 0);
}
 
开发者ID:billy1380,项目名称:blogwt,代码行数:18,代码来源:SearchHelper.java


示例5: addToIndex

import com.google.appengine.api.search.PutException; //导入依赖的package包/类
private void addToIndex(GeneralItem gi) throws PutException {
		System.out.println(gi);
//		JSONObject giObject = JSONParser.parseStrict(gi.toString()).isObject();
		String richText ="";
		try {
			JSONObject giObject = new JSONObject(gi.toString());
			if (giObject.has("richText")){
				richText = giObject.getString("richText");
			}
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		Document doc = Document.newBuilder()
				.setId("gi:" + generalItemId)
				.addField(Field.newBuilder().setName("gameId").setNumber(getGameId()))
				.addField(Field.newBuilder().setName("generalItemId").setNumber(getGeneralItemId()))
				.addField(Field.newBuilder().setName("title").setText(getGeneralItemTitle()))
				.addField(Field.newBuilder().setName("richText").setText(richText))
				.build();
		getIndex().put(doc);
	}
 
开发者ID:WELTEN,项目名称:dojo-ibl,代码行数:24,代码来源:GeneralItemSearchIndex.java


示例6: putDocumentWithRetry

import com.google.appengine.api.search.PutException; //导入依赖的package包/类
/**
 * Tries putting a document, handling transient errors by retrying with exponential backoff.
 *
 * @throws PutException if a non-transient error is encountered.
 * @throws MaximumRetriesExceededException with final {@link OperationResult}'s message as final message,
 *         if operation fails after maximum retries.
 */
private static void putDocumentWithRetry(String indexName, final Document document)
        throws PutException, MaximumRetriesExceededException {
    final Index index = getIndex(indexName);

    /*
     * The GAE Search API signals put document failure in two ways: it either
     * returns a PutResponse containing an OperationResult with a non-OK StatusCode, or
     * throws a PutException that also contains an embedded OperationResult.
     * We handle both ways by examining the OperationResult to determine what kind of error it is. If it is
     * transient, we use RetryManager to retry the operation; if it is
     * non-transient, we do not retry but throw a PutException upwards instead.
     */
    RM.runUntilSuccessful(new RetryableTaskThrows<PutException>("Put document") {

        private OperationResult lastResult;

        @Override
        public void run() {
            try {
                PutResponse response = index.put(document);
                lastResult = response.getResults().get(0);

            } catch (PutException e) {
                lastResult = e.getOperationResult();
            }
        }

        @Override
        public boolean isSuccessful() throws PutException {
            // Update the final message to be shown if the task fails after maximum retries
            finalMessage = lastResult.getMessage();

            if (StatusCode.OK.equals(lastResult.getCode())) {
                return true;
            } else if (StatusCode.TRANSIENT_ERROR.equals(lastResult.getCode())) {
                // A transient error can be retried
                return false;
            } else {
                // A non-transient error signals that the operation should not be retried
                throw new PutException(lastResult);
            }
        }
    });
}
 
开发者ID:TEAMMATES,项目名称:teammates,代码行数:52,代码来源:SearchManager.java


示例7: putDocumentsWithRetry

import com.google.appengine.api.search.PutException; //导入依赖的package包/类
/**
 * Tries putting multiple documents, handling transient errors by retrying with exponential backoff.
 *
 * @throws PutException when only non-transient errors are encountered.
 * @throws MaximumRetriesExceededException with list of failed {@link Document}s as final data and
 *         final {@link OperationResult}'s message as final message, if operation fails after maximum retries.
 */
private static void putDocumentsWithRetry(String indexName, final List<Document> documents)
        throws PutException, MaximumRetriesExceededException {
    final Index index = getIndex(indexName);

    /*
     * The GAE Search API allows batch putting a List of Documents.
     * Results for each document are reported via a List of OperationResults.
     * We use RetryManager to retry putting a List of Documents, with each retry re-putting only
     * the documents that failed in the previous retry.
     * If we encounter one or more transient errors, we retry the operation.
     * If all results are non-transient errors, we give up and throw a PutException upwards.
     */
    RM.runUntilSuccessful(new RetryableTaskThrows<PutException>("Put documents") {

        private List<Document> documentsToPut = documents;
        private List<OperationResult> lastResults;
        private List<String> lastIds;

        @Override
        public void run() throws PutException {
            try {
                PutResponse response = index.put(documentsToPut);
                lastResults = response.getResults();
                lastIds = response.getIds();

            } catch (PutException e) {
                lastResults = e.getResults();
                lastIds = e.getIds();
            }
        }

        @Override
        public boolean isSuccessful() {
            boolean hasTransientError = false;

            List<Document> failedDocuments = new ArrayList<>();
            for (int i = 0; i < documentsToPut.size(); i++) {
                StatusCode code = lastResults.get(i).getCode();
                if (!StatusCode.OK.equals(code)) {
                    failedDocuments.add(documentsToPut.get(i));
                    if (StatusCode.TRANSIENT_ERROR.equals(code)) {
                        hasTransientError = true;
                    }
                }
            }

            // Update the list of documents to be put during the next retry
            documentsToPut = failedDocuments;

            // Update the final message and data to be shown if the task fails after maximum retries
            finalMessage = lastResults.get(0).getMessage();
            finalData = documentsToPut;

            if (documentsToPut.isEmpty()) {
                return true;
            } else if (hasTransientError) {
                // If there is at least one transient error, continue retrying
                return false;
            } else {
                // If all errors are non-transient, do not continue retrying
                throw new PutException(lastResults.get(0), lastResults, lastIds);
            }
        }
    });
}
 
开发者ID:TEAMMATES,项目名称:teammates,代码行数:73,代码来源:SearchManager.java



注:本文中的com.google.appengine.api.search.PutException类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java NSObject类代码示例发布时间:2022-05-22
下一篇:
Java IDataSet类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap