(Translated by https://www.hiragana.jp/)
Google Ads Developer Blog: adwords_MutateJobService

If you've been following the AdWords API sunset and release announcements, you know that there have been some changes to batch processing: The planned sunset date of version v201601 is August, 2016, after which MutateJobService will no longer be available.

What do I need to do?
If you are still using MutateJobService, please migrate to BatchJobService ahead of August, 2016.

How do I migrate?
The migration from MutateJobService to BatchJobService is relatively straightforward and covered in the migration section of the batch processing guide. The guide also contains code examples for each client library to help you get started.

If you have any questions or need help with migration, please post on the forum or the Ads Developers Plus Page.

What do I need to do now?

AdWords API versions after v201509 will no longer support MutateJobService. Migrate to BatchJobService, introduced in v201509, as soon as you can. For sunset dates, check out our Deprecation Schedule.

What’s new?

BatchJobService supports all of the same operations as MutateJobService. Plus, we’ve provided some improvements:
  • Creation of dependent objects using temporary IDs
    • For example, you can create an entire campaign including ad groups and criteria in one job.
  • Improved performance
  • Better error reporting
    • If some operations failed, the errors returned by BatchJobService are correlated with those operations, making it easier to understand what went wrong.
    • If the service was unable to process any operations, it returns a detailed list of errors.
  • Higher limit on the number of operations per job
    • BatchJobService supports potentially hundreds of thousands of operations.
    • MutateJobService only supported thousands of operations.
Check out our Batch Processing guide for more details on these new features.

How do I migrate?

Thanks to the new utilities we’ve created in our client libraries, migration will be a simple process of passing in your existing operations to the BatchJobService rather than the MutateJobService.

Our guide has a section on Migrating from MutateJobService. Each of our client libraries have code examples that include utilities for the BatchJobService. The utilities in each of the client libraries do all of the heavy lifting for you, which will simplify your code and make the transition easier.

Where can I learn more?

If you missed our Fall 2015 workshops, we have a BatchJobService video with accompanying slides available on our AdWords API Workshop site.

Questions? Visit us on the AdWords API Forum or our Google+ page.

The AdWords API is designed to handle a high volume of changes, and many services allow developers to submit a large number of operations in one request. Most of the AdWords API services are synchronous though, so the client sends the request to the server, waits for processing and receives the result back.

Unlike other services, the MutateJobService (MJS) is designed for an asynchronous workflow. This has the following benefits:
  • No need to manage connections for each job - the job is executed autonomously and the results can be retrieved when ready.
  • Multiple jobs can be submitted and executed in parallel. In fact, the service has no limit on the maximum jobs count.
  • Transient errors like 'CONCURRENT_MODIFICATION' are automatically retried with no extra requests necessary.
  • Workload is automatically balanced so you will never receive a 'RateExceededError' error.
Also, MutateJobService operations cost only 50% of usual operations units cost.

Using MutateJobService in existing applications

Replacing existing calls to synchronous services with calls to MJS is easy. In most cases you can just use the same operations array to submit a job. Once submitted, the application needs to check the job status periodically to see when it is complete. Once ready, the results can be retrieved with the getResult method.

Please see examples in Java, PHP, Perl, DotNet, Ruby and Python for more details.

Recommendations:
  • Don't poll for job status too often as this can result in RATE_EXCEEDED_ERROR error. We recommend pausing for 30 seconds between get requests with an exponential backoff.
  • For better throughput, fewer large jobs are preferred over many smaller jobs. Once a job is scheduled and is executing, its progress will be very rapid.
  • When submitting many jobs for the same customerID, overall operation throughput will be optimal if no two outstanding jobs will be modifying the same AdGroup. Making all your jobs touch all AdGroups can cause severe slow-down or even job failures.
Note: while the old BulkMutateJobService is still available we recommend to use the MutateJobService for all future developments.

MutateJobService is covered in more details in our video presentation: Efficient API Usage with the MutateJobService. As always, please feel free to ask any questions regarding the AdWords API on our forum or during scheduled office hours.