调用ibm mq

    技术2024-04-17  91

    IBM OpenWhisk是一个简单的开源服务,可以响应传入的REST请求而按需快速启动和运行代码花絮。 查看IBM Bluemix上的OpenWhisk beta产品 。 在本教程中,我首先向您展示如何手动发布OpenWhisk命令。 然后,我向您展示如何使用我创建的Python库来使发出这些命令更加容易。

    我很想尝试OpenWhisk,因为我听说它有两个很大的优点:设置非常容易,而且计费比在长寿机器上运行应用程序便宜。 在弄清楚如何使用OpenWhisk之后 ,我创建并发布了一个微型Python库openWhiskLib.py来简化这些任务(如下图左侧所示):

    在OpenWhisk中配置JavaScript操作 调用动作

    在 Bluemix上 尝试 OpenWhisk在GitHub 上 获取openWhiskLib.py

    本教程需要什么

    学习,发展,联系。

    如果您尚未在Bluemix上构建和运行应用程序,请尝试一下 。 您最初的30天是免费的,除此之外,许多Bluemix服务都有免费计划。

    或者,更好的是,有了developerWorks Premium会员资格,您将获得一年的Bluemix免费和240美元的云信用额度。 了解有关developerWorks Premium如何为您提供快速入门以进行云开发或迁移的更多信息 。

    一个Bluemix帐户。 (注册您的免费试用帐户,或者如果已经拥有一个帐户,则登录到Bluemix 。) 使用Ubuntu Linux 14.04的VM。 (本教程中的步骤引用的是Ubuntu Linux计算机,但其他操作系统应该相似。)

    设置一个OpenWhisk客户端计算机

    使用Ubuntu Linux 14.04引导VM,以root用户身份登录,并应用其最新更新:

    apt-get -y update ; apt-get -y dist-upgrade

    现在,您可以使用此计算机将“ Hello world”应用程序上传到OpenWhisk,如下面的步骤3所述。

    安装,配置和测试OpenWhisk客户端

    登录到Bluemix并访问OpenWhisk CLI 。 现在,在屏幕上,您将看到三个步骤,并为您的Bluemix帐户定制了参数。 在您的OpenWhisk客户端计算机上执行三个步骤: 步骤1:下载OpenWhisk CLI,解压缩文件,然后将可执行文件wsk添加到您的路径。 步骤2: wsk property set...

    该命令将您的Bluemix凭据写入OpenWhisk客户机上的隐藏文件中。 对我来说,它在我的主目录中创建了这个隐藏文件:.wskprops

    提示:保存此隐藏文件。 我们将在本教程后面的部分中为Python库的环境变量使用一些参数。

    步骤3: wsk action invoke...

    该命令与Bluemix上的OpenWhisk服务进行通信,以确认您的凭证有效。 几秒钟后,wsk响应一个包含单词“ hello”的JSON结构。 成功!

    为了娱乐,将消息字符串从“ hello”更改为其他内容并重复。 响应中应包含您的新字符串。

    提示:详细模式

    如果将-v参数添加到任何wsk命令,它将显示它发送到服务器的HTTP请求。 我发现此功能对于调试和发现发出REST请求所需的参数非常有用。 (更多详细信息在此Stack Overflow交换中 。)

    将操作文件上传到Bluemix上的OpenWhisk服务

    Bluemix上的OpenWhisk教程中提供了一个用于操作文件的简单JavaScript代码段。

    发出教程中显示的wsk命令以创建,使用和删除操作文件。 使用-v verbose选项重复命令。 这显示了REST请求和从命令行发出命令所需的参数。

    这是一个例子:

    在您的OpenWhisk客户端计算机上创建一个名为“ hello.js”的文件:

    function main() { return {payload: 'hello'}; } 现在发出wsk命令来上传hello.js。 这是我的命令(对用户名和凭据进行了模糊处理以保护隐私): wsk -v action create hello hello.js {'apihost': 'openwhisk.ng.bluemix.net', 'namespace': 'user@example.com_dev', 'clibuild': '2016- 05-24T09:54:44-05:00', 'apiversion': 'v1'} ======== REQUEST: PUT https://openwhisk.ng.bluemix.net/api/v1/namespaces/user %40example.com_dev/actions/hello Headers sent: { "Authorization": "Basic S3sjGo6dKeKSIIRENS135xOsT3jEs7IiS3sjGo6dKeKSIIRENS135xOsT3jEs7Ii", "Content-Type": "application/json" } Body sent: {"exec": {"kind": "nodejs", "code": "function main() {\n return {payload: 'hello'};\n}\n"}}

    笔记:

    请求标头中的Auth字符串与.wskprops中存储的字符串不同。 (我相信它是基于64位编码的。) hello.js的内容以一个长字符串形式包含在请求主体中的可变code中。

    测试动作

    创建动作后,通过发出wsk action invoke命令对其进行测试:

    wsk -v action invoke /whisk.system/samples/echo -p message hello --blocking --result {'apihost': 'openwhisk.ng.bluemix.net', 'namespace': 'user@example.com_dev', 'clibuild': '2016- 05-24T09:54:44-05:00', 'apiversion': 'v1'} ======== REQUEST: POST https://openwhisk.ng.bluemix.net/api/v1/namespaces/whisk.system/actions/samples/echo? blocking=true&result=true Headers sent: { "Authorization": "Basic S3sjGo6dKeKSIIRENS135xOsT3jEs7IiS3sjGo6dKeKSIIRENS135xOsT3jEs7Ii", "Content-Type": "application/json" } Body sent: {"message": "hello"} -------- RESPONSE: Got response with code 200 Body received: { "message": "hello" } ======== { "message": "hello" }

    介绍openWhiskLib.py

    既然您已经学会了手动发出所有命令,请尝试使用新的Python脚本简化发出命令的过程。

    迄今为止,已经开发并测试了以下功能:

    createAction(文件名,操作) deleteAction(动作) invokeAction(动作) invokeEcho(消息) listActions() listNamespaces()

    openWhiskLib项目在GitHub上公开可用。

    要在计算机上使用openWhiskLib,请首先定义三个环境变量:

    OPENWHISK_APIHOST 从文件.wskprops获取此值 OPENWHISK_NAMESPACE 从文件.wskprops获取此值 OPENWHISK_TOKEN 通过发出任何详细的wsk命令来获取此值,例如: wsk -v action invoke /whisk.system/samples/echo -p message hello --blocking --result

    例如,在您的Linux笔记本电脑上,您可以像我一样设置值(出于保密目的,我的个人数据被遮盖了):

    export OPENWHISK_APIHOST="openwhisk.ng.bluemix.net" export OPENWHISK_NAMESPACE="username@example.com_dev" export OPENWHISK_TOKEN="S3sjGo6dKeKSIIRENS135xOsT3jEs7IiS3sjGo6dKeKSIIRENS135xOsT3j Es7Ii"

    为了方便起见,您可以在bash脚本中定义值。 您可以在GitHub项目中复制和编辑此示例:bin / setenv.sh

    使用openWhiskLib.py创建动作

    要创建动作,请首先在计算机上创建一个文件,其中包含要上传和执行JavaScript代码的片段。 例如,您可以使用类似于上面列出的相同示例的代码:goodday.js:

    function main() { return {payload: 'good day'}; }

    然后从您的Python解释器调用openWhiskLib函数createAction() 。 例如:

    定义环境变量(带点):

    . setenv.sh

    调用Python

    python Python 2.7.6 (default, Jun 22 2015, 17:58:13) [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from openwhisklib import * >>> createAction( 'goodday.js', 'goodday') Issuing put request: url=https://openwhisk.ng.bluemix.net/api/v1/namespaces/user@example.com_dev/actions/goodday payload: {'exec': {'kind': 'nodejs', 'code': "function main() {\n return {payload: 'good day'};\n}\n"}} headers={'content-type': 'application/json', 'Authorization': 'Basic S3sjGo6dKeKSIIRENS135xOsT3jEs7IiS3sjGo6dKeKSIIRENS135xOsT3jEs7Ii'} Response status_code=200 { "name": "goodday", "publish": false, "annotations": [], "version": "0.0.1", "exec": { "kind": "nodejs", "code": "function main() {\n return {payload: 'good day'};\n}\n" }, "parameters": [], limits": { "timeout": 60000, "memory": 256 }, "namespace": "user@example.com_dev" } <Response [200]> >>>

    使用openWhiskLib.py调用动作

    最后,使用openWhiskLib.py从Bluemix的OpenWhisk调用代码片段:

    >>> >>> invokeAction('goodday') Issuing request: url=https://openwhisk.ng.bluemix.net/api/v1/namespaces/user@example.com_dev/actions/goodday? blocking=true&result=false payload={} headers={'content-type': 'application/json', 'Authorization': 'Basic S3sjGo6dKeKSIIRENS135xOsT3jEs7IiS3sjGo6dKeKSIIRENS135xOsT3jEs7Ii'} Response status_code=200 { "name": "goodday", "subject": "user@example.com", "activationId": "f81398a389734d018f4c92fbf59e2dbe", "publish": false, "annotations": [], "version": "0.0.1", "response": { "result": { "payload": "good day" }, "success": true, "status": "success" }, "end": 1466083636776, "logs": [], "start": 1466083636724, "namespace": "user@example.com" } <Response [200]> >>> >>>

    测试用例和示例代码

    GitHub上的openWhiskLib项目中的简单测试用例(tests / openwhisklib.tests.py)演示了openWhiskLib.py中的每个函数,显示了输入和输出。 您可以使用它们来验证OpenWhisk是否可以使用您的凭据。

    结论

    本教程为您提供了OpenWhisk的高级概述,以及在IBM Bluemix上载和运行您自己的代码的示例。 您还看到了一个新的Python库,该库简化了将应用程序访问和部署到OpenWhisk的过程。 我希望您可以使用openWhiskLib.py。 接受它,对其进行增强,对其进行变形并将其制成自己的。


    翻译自: https://www.ibm.com/developerworks/cloud/library/cl-python-openwhisk-bluemix-trs/index.html

    相关资源:IBMMQ消息队列JAR包
    Processed: 0.017, SQL: 9