openshift_在OpenShift上将JMS与JBoss A-MQ结合使用。 从远程客户端和加密中学到的经验教训。...

openshift

openshift

OpenShift是“红帽开发的开放式混合云应用程序平台”。 它具有不同的风格,对于大多数您想做的事情,最有趣的部分是公共云应用程序开发和托管平台“ OpenShift Online ”。 您可以轻松地尝试一下,因为在云中使用OpenShift Online是免费的,而且很容易。 它所需要的只是一个电子邮件地址。 该免费产品允许最多三个基本的小型设备,并可以托管来自多种不同语言和框架的三个应用程序。 如果您需要更多,可以将您的计划升级到付费版本。 有关更多详细信息,请访问在线功能比较网站

OpenShift上的JBoss A-MQ

Java消息服务是跨系统通信的有效方法,即使在非Java应用程序之间也是如此。 通过基于开放源代码技术和严格的标准,RedHat OpenShift使开发人员可以轻松地将其JMS应用程序移动到云中,或编写利用JMS消息和加密的Internet连接的新系统。

这篇文章将介绍使用两个主要应用程序的方法:用于托管Web应用程序的WildFly 8和用于异步消息传递的JBoss A-MQ 。 这两个应用程序都可以在OpenShift的免费层中运行。

创建一个A-MQ装备

通过将A-MQ部署到OpenShift云,您的设备将收到几个可公开访问的端口。 然后,客户端系统可以使用这些远程端口连接到您的A-MQ服务。 端点需要加密,因此不会在Internet上以纯文本形式发送JMS消息。

创建A-MQ装备的第一步是克隆现有的JBoss Fuse A-MQ墨盒。 对于那些对墨盒管理感兴趣的人,可以查看有关该墨盒的完整详细信息。 (注意:如果您正在寻找带有ActiveMQ的上游墨盒,请查看此博客。 )

rhc create-app amq http://is.gd/Q5ihum

创建后,该齿轮会提供三个重要的信息:

  1. 您将用于登录JBoss Fuse的管理密码,用于管理A-MQ。
  2. 客户必须具有一个新的公用密钥才能与A-MQ通信。 该信息如下所示:

    ––BEGIN证书-

    --–结束证书-

  3. A-MQ用于远程连接的公共端口列表。

在OpenShift上管理加密

客户端和您的OpenShift设备之间的区别在于OpenShift需要私钥。 如果需要更改密钥,则密钥库文件为FILENAME。 如果更改密钥,则客户端必须具有公共密钥才能信任它。 如果更改键,则必须重新启动齿轮。 如果您在创建齿轮时忘记了复制证书,并且更改了密钥库并需要提取密钥,请使用以下命令:

keytool -list -keystore ~/jboss-amq/jboss-a-mq-6.1.0.redhat-378/etc/keystore.jks
keytool -exportcert -alias (whatever it says) -keystore -file openshiftamq.cer

使用SFTP客户端下载openshiftamq.cer文件并配置客户端。

在客户端上管理加密

  1. 将密钥文本复制到一个名为amqpublic.cer的文件中。 复制每一行,包括BEGIN和END行。
  2. 将公共证书导入到客户将使用的信任库中。
    keytool -importcert -alias openshiftamq -file openshiftamq.cer openshiftamq.jks
  3. 将openshiftamq.jks文件放置为应用程序的类路径资源或值得纪念的地方。 您不再需要.cer文件,但仍可以保留它。
  4. 在客户端代码中,将该信任库配置为与A-MQ连接一起使用。 如果不执行此步骤,客户端将不信任服务器。
    private ConnectionFactory connection(String url) {
        ActiveMQSslConnectionFactory connectionFactory = new ActiveMQSslConnectionFactory(url);
        try {
            connectionFactory.setTrustStore("openshiftamq.jks"); //or file if not in classpath root
        } catch (Exception ex) {
            Logger.getLogger(getClass().getName()).log(Level.SEVERE, "Unable to load trust store.", ex);
        }
        connectionFactory.setTrustStorePassword("put your password here");
        return connectionFactory;
    }

客户远程通讯

使用OpenShift保险丝A-MQ装置的好处之一是可以暴露多个外部端口。 结果,您的A-MQ服务可用,而无需rhc port-forward命令。 A-MQ客户的URL如下所示:

ssl://gearname-YourDomain.rhcloud.com:PORT
  • 齿轮名–管理控制台中齿轮的名称。
  • YourDomain –您的标准OpenShift域。
  • PORT –创建盒带时提供的数字端口号。

使用上面的ConnectionFactory代码配置客户端。

OpenShift Gear中的其他ActiveMQ配置

您的OpenShift实例中提供了标准A-MQ实例的许多配置选项。 为此的配置文件是:

~/jboss-amq/jboss-a-mq-6.1.0.redhat-78/etc/activemq.xml

有一些警告。 即,您可以更改<transportConnector />的协议,但不能更改IP或端口。 这些端口由您的OpenShift Gear控制,并且实际上是外部区域唯一允许的端口。

防止齿轮空转

OpenShift被设计为资源共享系统,并且空闲资源实际上将进入睡眠状态,直到被访问为止。 JMS在OpenShift上造成了一个特殊的问题,即如果JMS处于空闲状态,则连接将不起作用,新客户端也将无法连接。

为防止这种情况,请自动执行一个脚本,该脚本会定期与JBoss Fuse Web控制台进行交互,或者始终保持至少一个客户端与您的A-MQ连接。

翻译自: https://www.javacodegeeks.com/2014/11/jms-with-jboss-a-mq-on-openshift-lessons-learned-about-remote-clients-and-encryption.html

openshift

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值