Message Hub 作为无服务器项目中的事件源不会创建任何触发器或规则
Message Hub as event source in Serverless project doesn't create any triggers or rules
我正在尝试将消息中心主题设置为云功能的事件源,如下所示:
custom:
org: MyOrganization
space: dev
mhServiceName: my-kafka-service
functions:
main:
handler: src/handler.main
events:
- message_hub:
package: /${self:custom.org}_${self:custom.space}/Bluemix_${self:custom.mhServiceName}_Credentials-1
topic: test_topic
当我部署服务时,没有创建触发器或规则。因此,当我向 Kafka 主题发布消息时,不会调用该函数。
我还尝试显式设置触发器和规则,但这只会创建自定义类型的触发器,而不是消息中心类型。自定义触发器似乎在这种情况下不起作用。
我错过了什么?
更新
正如 James 指出的那样,未创建触发器和规则的原因是缩进不正确。
在尝试部署该功能时,我仍然 运行 遇到找不到包的问题(请参阅我对 James 解决方案的回答),我发现了问题所在。
事实证明,您还必须做两件文档中未明确提及的事情。
1) 您必须手动创建服务凭据(文档假定您称它们为 Credentials-1
,所以我也这样做了)
2) 您必须将 Kafka(消息中心,现在称为事件流)绑定到 serverless.yml
中的函数
生成的函数定义应如下所示:
functions:
main:
handler: src/handler.main
bind:
- service:
name: messagehub
instance: ${self:custom.mhServiceName}
events:
- message_hub:
package: /${self:custom.org}_${self:custom.space}/Bluemix_${self:custom.mhServiceName}_Credentials-1
topic: test_topic
serverless.yml
中的 YAML 缩进不正确。这意味着事件属性在部署期间未由框架注册。
将 serverless.yml
文件更改为以下格式,它应该可以工作。
custom:
org: MyOrganization
space: dev
mhServiceName: my-kafka-service
functions:
main:
handler: src/handler.main
events:
- message_hub:
package: /${self:custom.org}_${self:custom.space}/Bluemix_${self:custom.mhServiceName}_Credentials-1
topic: test_topic
我正在尝试将消息中心主题设置为云功能的事件源,如下所示:
custom:
org: MyOrganization
space: dev
mhServiceName: my-kafka-service
functions:
main:
handler: src/handler.main
events:
- message_hub:
package: /${self:custom.org}_${self:custom.space}/Bluemix_${self:custom.mhServiceName}_Credentials-1
topic: test_topic
当我部署服务时,没有创建触发器或规则。因此,当我向 Kafka 主题发布消息时,不会调用该函数。
我还尝试显式设置触发器和规则,但这只会创建自定义类型的触发器,而不是消息中心类型。自定义触发器似乎在这种情况下不起作用。
我错过了什么?
更新
正如 James 指出的那样,未创建触发器和规则的原因是缩进不正确。
在尝试部署该功能时,我仍然 运行 遇到找不到包的问题(请参阅我对 James 解决方案的回答),我发现了问题所在。
事实证明,您还必须做两件文档中未明确提及的事情。
1) 您必须手动创建服务凭据(文档假定您称它们为 Credentials-1
,所以我也这样做了)
2) 您必须将 Kafka(消息中心,现在称为事件流)绑定到 serverless.yml
生成的函数定义应如下所示:
functions:
main:
handler: src/handler.main
bind:
- service:
name: messagehub
instance: ${self:custom.mhServiceName}
events:
- message_hub:
package: /${self:custom.org}_${self:custom.space}/Bluemix_${self:custom.mhServiceName}_Credentials-1
topic: test_topic
serverless.yml
中的 YAML 缩进不正确。这意味着事件属性在部署期间未由框架注册。
将 serverless.yml
文件更改为以下格式,它应该可以工作。
custom:
org: MyOrganization
space: dev
mhServiceName: my-kafka-service
functions:
main:
handler: src/handler.main
events:
- message_hub:
package: /${self:custom.org}_${self:custom.space}/Bluemix_${self:custom.mhServiceName}_Credentials-1
topic: test_topic