通过 openwhisk npm 动态创建 MessageHub 源触发器



尝试通过 openwhisk Node.js 模块创建 MessageHub 触发器。 触发器已创建,但列为自定义触发器,并且不与消息中心源关联。

const fs = require('file-system');
const openwhisk = require('openwhisk');
let options = { apihost: 'openwhisk.ng.bluemix.net', api_key: 'xxxx',namespace: 'my_dev'};
var ow = openwhisk(options);

let trigoptions = {
name: 'test-api-trigger',
annotations: [
{ 
key: 'feed',
value: '/my_dev/MyOrg_my-message-hub_my-message-hub-credentials/messageHubFeed'
}
],
isJSONData : true,
topic :  'my-events',
namespace: 'my_dev'
};
ow.triggers.create( trigoptions )
.then( trigger => { console.log(trigger); })
.catch( err => { console.log(err);});

使用 SDK 创建触发器源需要单独的源创建操作。这由 CLI 自动处理。使用客户端库时,需要额外的手动步骤。

这是您的代码中重新设计的示例...

const ow = openwhisk(options);
const feedname = '/user@email.com_dev/Bluemix_Message Hub-ir_Credentials-1/messageHubFeed'
const trigoptions = {
name: 'sample-api-trigger',
annotations: [
{ 
key: 'feed',
value: feedname
}
]
};
const feedparams = {
isJSONData: true,
topic:  'mytopic'
}
ow.triggers.create( trigoptions )
.then( trigger => { 
console.log(trigger);
return ow.feeds.create({name: feedname, trigger: trigoptions.name, params: feedparams}).then(package => {
console.log('trigger feed created', package)
}).catch(err => {
console.error('failed to create trigger feed', err)
})
})
.catch( err => { console.log(err);});

有一个悬而未决的问题,即无法使用 JavaScript SDK 创建触发器注释(用于存储源引用(。

最新更新