0

我在 Ubuntu 16.04 桌面上进行了 openwhisk 本地安装。操作、触发器、规则和警报触发器正在工作。

我克隆了 git 存储库https://github.com/apache/incubator-openwhisk-package-kafka并依次运行以下命令: installCatalog.sh 、 gradlew :distDocker 、 installKafka.sh

然后我尝试创建一个触发器:

bin/wsk trigger create MyKafkaTrigger -f /messaging/kafkaFeed -p brokers "
[\"localhost:9092\", \"localhost:9093\"]" -p topic test -p isJSONData true -
-insecure

我正在关注自述文件的这一部分:“创建一个监听通用 Kafka 实例的触发器”

我正在重新使用作为 Openwhisk 安装的一部分创建的 Kafka 实例,并创建了一个名为“test”的主题 - 我可以使用 kafka 命令行工具发布/使用该主题。

触发器创建失败(它删除触发器,说资源不存在)。

我观察到的一件事是在 /guest 下创建了以下软件包:

bin/wsk package list /guest --insecurepackages
/guest/messagingWeb                                                    
                     private
/guest/messaging                      

我确实将提要名称改为/guest/messaging/kafkFeed,只有kafkaFeed等,但结果略有不同:

bin/wsk trigger create MyKafkaTrigger -f /guest/messaging/kafkaFeed -p 
brokers "[\"localhost:9092\", \"localhost:9093\"]" -p topic test -p 
isJSONData true --insecure

给出一个 JSON 输出说“错误”:“请求的资源不存在。”

bin/wsk trigger create MyKafkaTrigger -f /messaging/kafkaFeed -p brokers "
[\"localhost:9092\", \"localhost:9093\"]" -p topic test -p isJSONData true -
-insecure

ok: deleted trigger MyKafkaTrigger
error: Unable to create trigger 'MyKafkaTrigger': Unable to invoke trigger 
'MyKafkaTrigger' feed action '/messaging/kafkaFeed'; feed is not configured: 
Unable to invoke action 'kafkaFeed': The supplied authentication is not 
authorized to access this resource. (code 186)

寻求任何帮助

4

1 回答 1

0

我按照开发指南启动并运行:https ://github.com/apache/incubator-openwhisk-package-kafka/blob/master/devGuide.md

以下是我成功创建提要触发器的步骤:

  1. 通过运行记下身份验证密钥

    bin/wsk -i property get --auth
    
  2. 运行安装脚本

    ./installKafka.sh <authKey> <edgehost> <dburl> <dbprefix> <apihost>
    

注意 的值authKey是第一步得到的值。其他参数的值见https://github.com/apache/incubator-openwhisk-package-kafka/blob/master/devGuide.md#install-行动

  1. 安装脚本成功完成后,验证是否安装了正确的软件包。您应该看到messagingmessagingWeb包。例如

    bin/wsk -i package list /guest
    
    packages
    /guest/messagingWeb                                                    private
    /guest/messaging                                                       shared
    
  2. 现在验证该kafkaFeed操作是否存在

    bin/wsk -i package get --summary /guest/messaging
    
    package /guest/messaging: Returns a result based on parameter endpoint
       (parameters: *endpoint)
     action /guest/messaging/kafkaProduce: Produce a message to a Kafka cluster
       (parameters: base64DecodeKey, base64DecodeValue, brokers, key, topic, value)
     feed   /guest/messaging/kafkaFeed: Feed to listen to Kafka messages
       (parameters: brokers, endpoint, isBinaryKey, isBinaryValue, isJSONData, topic)
    
  3. 现在,您可以通过将命名空间作为完整包名的一部分传入,或者去掉包名的前导来创建/触发器

    bin/wsk -i trigger create MyKafkaTrigger -f /guest/messaging/kafkaFeed -p brokers "[\"localhost:9092\", \"localhost:9093\"]" -p topic test -p isJSONData true
    
    OR
    
    bin/wsk -i trigger create MyKafkaTrigger -f messaging/kafkaFeed -p brokers "[\"localhost:9092\", \"localhost:9093\"]" -p topic test -p isJSONData true
    
于 2017-11-06T17:43:23.847 回答