【问题标题】:Getting error when trying to run MessageHub Reciever using Java and VCAP_SERVICES尝试使用 Java 和 VCAP_SERVICES 运行 MessageHub Reciever 时出错
【发布时间】:2016-08-12 21:33:14
【问题描述】:

我有一个在 Bluemix 上供应的 IBM Message Hub 实例。我已经实现了一个在我的本地机器上运行的 Java 接收器,它需要能够连接到这个 IBM Message Hub 实例并接收消息。

我应该如何设置我的 VCAP_SERVICES 以便我可以从 Bluemix 连接到我的 IBM Message Hub 实例?当我转到“服务凭据”选项卡时,我配置了一组凭据。密钥名称是 MHCredentials。它的 JSON 值为:

{
  "mqlight_lookup_url": "https://mqlight-lookup-prod01.messagehub.services.us-south.bluemix.net/Lookup?serviceId=26f5f662-b757-43dc-8fcc-810c8d3fbeec",
  "api_key": "DXXXXXXXXXXXXXXXXXXXXXXXXXXXXx",
  "kafka_admin_url": "https://kafka-admin-prod01.messagehub.services.us-south.bluemix.net:443",
  "kafka_rest_url": "https://kafka-rest-prod01.messagehub.services.us-south.bluemix.net:443",
  "kafka_brokers_sasl": [
    "kafka01-prod01.messagehub.services.us-south.bluemix.net:9093",
    "kafka02-prod01.messagehub.services.us-south.bluemix.net:9093",
    "kafka03-prod01.messagehub.services.us-south.bluemix.net:9093",
    "kafka04-prod01.messagehub.services.us-south.bluemix.net:9093",
    "kafka05-prod01.messagehub.services.us-south.bluemix.net:9093"
  ],
  "user": "DXXXXXXXXXXXXXXXXXXXx",
  "password": "3XXXXXXXXXXXXXXXXXXXXXXXXX"
}

请告诉我应该如何设置 VCAP_SERVICES,以便我可以从本地计算机上运行的接收器连接到 MessageHub。我已经在我的机器上创建了一个名为:VCAP_SERVICES 的环境变量,上面显示了 JSON 字符串。但是,当我运行接收器时,出现错误:Not a JSON Array

【问题讨论】:

  • 这篇博文可能会有所帮助,尽管它提到了 kafka 0.9.0,您应该使用当前的 kafka 0.10.0 developer.ibm.com/messaging/2016/03/03/… 博客建议您有一个 JAAS 登录配置文件,登录配置文件示例: KafkaClient { com.ibm.messagehub.login.MessageHubLoginModule 需要 serviceName="kafka" username="username" password="password"; };

标签: java ibm-cloud message-hub


【解决方案1】:

IBM Messaging 制作了一个关于如何开始使用 MessageHub 的教程视频。该视频应涵盖连接到服务的基础知识:

https://www.youtube.com/watch?v=tt-bLtFzC_4

您的“不是 JSON 数组”错误表明您的 VCAP_SERVICES 环境变量格式不正确,并且确实不是有效的 JSON?

您可以尝试开发一个非常小的应用程序,除了打印出 VCAP_SERVICES 环境变量之外什么都不做。然后您可以在笔记本电脑上本地运行它,也可以将其部署到 Bluemix 中以比较两者,看看有什么区别?

public class VcapPrinter {
    public static void main(String[] args) {
        String vcapServices = System.getenv("VCAP_SERVICES");
        System.out.println(vcapServices);
    }
}

您可能需要比这更聪明一些并保持应用程序处于活动状态,以便您可以检查 Bluemix 中的 STDOUT。

【讨论】:

    猜你喜欢
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 2016-03-23
    相关资源
    最近更新 更多