Marklogic 管理 API 调度和删除任务
Marklogic management API to schedule and delete a Task
我正在使用管理 API 来安排任务 manage/v2/tasks?group-id=Default
,我发送的 JSON 字符串是
{
"task-enabled":true,
"task-path":"/MarkLogic/flexrep/tasks/push-local-forests.xqy",
"task-root": "Modules/",
"task-type": "minutely",
"task-period" : 1,
"task-database": "%%DATABASE%%",
"task-modules": "%%MODULES_DATABASE%%",
"task-user": "admin",
"task-priority": "higher"
}
我的问题是如何设置任务名称?通过查看 manage-task-properties.xsd
它没有任务名称。因此,如果我想使用管理 api、DELETE /manage/v2/tasks/{id|name}
删除任务,它确实需要任务名称。
所以我在上面的 json 中创建了一个随机任务 ID task-id:9459386113689474276
,当我这样做时,管理 api 抛出异常
{
"errorResponse": {
"statusCode": "400",
"status": "Bad Request",
"messageCode": "MANAGE-INVALIDPAYLOAD",
"message": "MANAGE-INVALIDPAYLOAD: (err:FOER0000) Payload has errors in structure, content-type or values. Task payload invalid."
}
}
我查看服务器日志,我发现了这个
2017-09-12 20:11:37.721 Info: [Event:id=HTTPRequest ErrorFormat] Dispatching error code to app defined error handler: 500 manage/error-handler.xqy
2017-09-12 20:11:37.818 Info: Manage: MANAGE-INVALID (err:FOER0000): task-id
2017-09-12 20:11:37.818 Info: Manage: 169:16:/MarkLogic/manage/models/task-properties-model.xqy
如何设置 task-id
或 task-name
以便我可以使用管理 API 删除任务?由于删除管理 API 确实需要删除任务 name|id
********* 编辑 *********
我希望我的 FlexRep Scheduled task
被显式部署,而且只有在为特定环境启用 flexrep
时才可以。我知道我可以根据一些用户定义的变量或环境删除部署任务命令,但这也会删除其他任务的所有部署。
有什么方法可以告诉我不要部署特定任务吗?
不幸的是,计划任务没有名称,但它有任务路径。当你创建计划任务时,MarkLogic 会为你创建任务 ID——你不能自己设置。
当您需要删除任务路径时,您需要使用管理 API 查找 ID - 您很可能会通过任务路径执行此操作(这种情况应该很少见)有两个具有相同任务路径的计划任务)。
请注意,ml-gradle - https://github.com/marklogic-community/ml-gradle - 可以为您处理所有这些,以防使用 Gradle 是您 and/or 您的团队的一个选项。
我正在使用管理 API 来安排任务 manage/v2/tasks?group-id=Default
,我发送的 JSON 字符串是
{
"task-enabled":true,
"task-path":"/MarkLogic/flexrep/tasks/push-local-forests.xqy",
"task-root": "Modules/",
"task-type": "minutely",
"task-period" : 1,
"task-database": "%%DATABASE%%",
"task-modules": "%%MODULES_DATABASE%%",
"task-user": "admin",
"task-priority": "higher"
}
我的问题是如何设置任务名称?通过查看 manage-task-properties.xsd
它没有任务名称。因此,如果我想使用管理 api、DELETE /manage/v2/tasks/{id|name}
删除任务,它确实需要任务名称。
所以我在上面的 json 中创建了一个随机任务 ID task-id:9459386113689474276
,当我这样做时,管理 api 抛出异常
{
"errorResponse": {
"statusCode": "400",
"status": "Bad Request",
"messageCode": "MANAGE-INVALIDPAYLOAD",
"message": "MANAGE-INVALIDPAYLOAD: (err:FOER0000) Payload has errors in structure, content-type or values. Task payload invalid."
}
}
我查看服务器日志,我发现了这个
2017-09-12 20:11:37.721 Info: [Event:id=HTTPRequest ErrorFormat] Dispatching error code to app defined error handler: 500 manage/error-handler.xqy
2017-09-12 20:11:37.818 Info: Manage: MANAGE-INVALID (err:FOER0000): task-id
2017-09-12 20:11:37.818 Info: Manage: 169:16:/MarkLogic/manage/models/task-properties-model.xqy
如何设置 task-id
或 task-name
以便我可以使用管理 API 删除任务?由于删除管理 API 确实需要删除任务 name|id
********* 编辑 *********
我希望我的 FlexRep Scheduled task
被显式部署,而且只有在为特定环境启用 flexrep
时才可以。我知道我可以根据一些用户定义的变量或环境删除部署任务命令,但这也会删除其他任务的所有部署。
有什么方法可以告诉我不要部署特定任务吗?
不幸的是,计划任务没有名称,但它有任务路径。当你创建计划任务时,MarkLogic 会为你创建任务 ID——你不能自己设置。
当您需要删除任务路径时,您需要使用管理 API 查找 ID - 您很可能会通过任务路径执行此操作(这种情况应该很少见)有两个具有相同任务路径的计划任务)。
请注意,ml-gradle - https://github.com/marklogic-community/ml-gradle - 可以为您处理所有这些,以防使用 Gradle 是您 and/or 您的团队的一个选项。