1

尝试通过 openwhisk Node.js 模块创建 MessageHub 触发器。触发器已创建,但列为 CustomTrigger 且未与消息中心提要关联。

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);});
4

1 回答 1

2

使用 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 创建触发注释(用于存储提要参考)的突出问题。

于 2018-08-13T15:54:11.550 回答