Oozie 使用ActiveMQ达成 JMS通告必发365bifa0000

by admin on 2019年4月21日

照片摄影于205

一,介绍

       
这几天,社会科学界联合会换了新的办公,已经打扫出来了,跑了几趟,找了多少个领导和教授,从那几个办公室推到另一个办公室,从1楼推到3楼,在死缠烂打下,老师终于同意了,把新办公室的钥匙给大家了。

交由给Oozie的学业,作业在运作进程中的状态会发生变化如:奉行成功了,大概失利了……Oozie能够监察和控制那几个作业状态的变动并且将那些消息发送到JMS音信服务器。那里,使用ActiveMQ作为JMS音信服务器。

       
好了,扯远了,前些天是要跟大家讲本身在主席助理时期的作业,其实一同始社会科学界联合会换届的时候,作者并不是主席助理这几个职责,当时给本身布署的是组策部副部,大2真是委屈,大学一年级的时候作者做的事并不少,投入了汪洋的年月和生机,最后在学生会也是副部,在社会科学界联合会依然副部,笔者并不愿意,我对友好的稳定远不这么。小编也不去抱怨这么多,调治一下心情继续加油干,不正是贰个副部吗,好歹也是个学生干部啊,继续尽心尽力把团结的工作办好。

Oozie supports publishing notifications to a JMS Provider for job status
changes and SLA met and miss events.

       
后来温馨的成分丰裕外来的成分,作者毕竟持之以恒不下去了,找到主席,给他发了壹段辞职的新闻,然后本人就扔开手提式有线电话机躺床上了,第一天一大早,时钟把自个儿叫醒,小编张开手提式有线电话机一看,9九+的新闻,作者感觉又是群音信,迷糊中见到有1个密友窗口后边显示9玖+,笔者感觉未有人会这样在意的去留,一下子以为自个儿有些对不起社会科学界联合会,内心一阵鲜明的自己钻探,作者一条一条的看,从干事到副部,从下伍子棋到撕名牌,讲了好多那儿发出的职业,小编也讲了自己的思念,笔者自然不想说,小编感觉小编的去留对社会科学界联合会并从未多大的影响,很谢谢这几个给自家清晨发音信的人——社联副主席。

For Oozie to send/receive messages, a JMS-compliant broker should be
installed. Apache ActiveMQ is a popular JMS-compliant broker usable for
this purpose.

       
刚好今年社会科学界联合会退了3个主持人助理,那时候缺1个人,于是顺理成章的把本人订到了主席助理的职位上,但自己内心以为很不光彩,在到那个职分然后的几天,小编退了组策部的群,然后也不跟社会科学界联合会里面包车型客车人联系,总以为他们戴着有色近视镜在看本身,近乎把温馨封闭起来了,后来日益的,他们开采自个儿的百般后,主动跟本人交换,让作者不用挂念那么多,小编也渐渐的开头驾驭,在2个地方待久了,是真的重情义的,和您共事的此人,在一道久了你也会多壹份关心的。

 

       
就那样稀里糊涂的入选了主持人助理,一开头作者并不知道那是干嘛,后来主持人开首布局地分任务下来,反正不管在怎么职位上,做好和谐能做的事就能够,在其位谋其职,把每壹件轻易的事务都办好了你就不简单,在大贰的那个时候里,作者手底下未有一个干事,唯有几个给本人面子的能喊动,还好社会科学界联合会的作业并不是尤其多,一些细节自个儿还是能够拍卖好。

二,配置Oozie以允许协理音信服务

       
给本人纪念最深的要么当下大家一道在办公室里面下5子棋的时候,那段时间,笔者的5子棋日新月异,驾驭了“田”字形和“日”字形二种下棋方法,当时的办公室,什么都比较完备,有WIFI、有饮水机、有220V的电,反正里面包车型客车设备比寝室都便宜,当时壹有时光就往里面跑,周末基本都在里面度过的,今时区别在此之前了,里面地板也破了,桌子也破了,人走楼空啊。

要求修改oozie-site.xml并加上若干布置进去,具体可参照官方网址Notifications
Configuration

       
在这年里,笔者庆幸本身认识你们这一批人,从组策部助理过渡到主席助理,让作者学到了何等去管理局地累赘的事务,也加码了本身周末时光,更珍视的是让自家的棋技进步赶快。

服从官方网站给出的步子实行安排就可以。

鉴于自家用的是Cloudera Hadoop,故能够在其管理界面直接开展安插。如下图:

必发365bifa0000 1

 

必发365bifa0000 2

修改Oozie配置之后,需求重启生效。

 

叁,安装ActiveMQ接收新闻

参考ActiveMQ官方网站,安装及安顿。

开发银行ActiveMQ,过一段时间后,若有作业提交给Oozie,Oozie施行后会给ActiveMQ发新闻。还未弄通晓毕竟在什么样动静下,Oozie会向ActiveMQ发送新闻???

正如图:ActiveMQ收到的音讯:

必发365bifa0000 3

topicName 即为userName,可从Oozie的配置文件oozie-default.xml中看到:

必发365bifa0000 4

 

4,编写ActiveMQ Client程序从Borker中获得音信

落到实处javax.jms.MessageListener接口,建立连接代码如下:

        OozieClient oc = new OozieClient("http://192.168.121.35:11000/oozie");
        JMSConnectionInfo jmsInfo = oc.getJMSConnectionInfo();

        Properties jndiProperties = jmsInfo.getJNDIProperties();
        Context jndiContext = new InitialContext(jndiProperties);

        String connectionFactoryName = (String) jndiContext.getEnvironment()
                .get("connectionFactoryNames");
        ConnectionFactory connectionFactory = (ConnectionFactory) jndiContext
                .lookup(connectionFactoryName);
        Connection connection = connectionFactory.createConnection();

        Session session = connection.createSession(false,
                Session.AUTO_ACKNOWLEDGE);

 

当有新新闻达到时,自动调用MessageListener的onMessage()方法得到到音讯。

    @Override
    public void onMessage(Message message) {
        try {
            if (message.getStringProperty(JMSHeaderConstants.MESSAGE_TYPE)
                    .equals(org.apache.oozie.client.event.Event.MessageType.SLA
                            .name())) {
                SLAMessage slaMessage = JMSMessagingUtils
                        .getEventMessage(message);
                String id = slaMessage.getId();
                String noti = slaMessage.getNotificationMessage();
                System.out.println(id + " : " + noti);
                // Further processing
            } else if (message.getStringProperty(JMSHeaderConstants.APP_TYPE)
                    .equals(AppType.WORKFLOW_JOB.name())) {
                WorkflowJobMessage wfJobMessage = JMSMessagingUtils
                        .getEventMessage(message);
                String jobId = wfJobMessage.getId();//获得作业的ID
                Date startTime = wfJobMessage.getStartTime();//获得作业的启动时间
                System.out.println(jobId + startTime);
                // Further processing
            }

 

5,测试

给Oozie提交workflow作业,在MyEclipse调节塞内加尔达喀尔来看,该学业的ID和起步时间已经查询到了。

必发365bifa0000 5

 

6,总结

出于原先当作业提交未来,不断地向Oozie
Server发HTTP请求(每隔10秒二回)的点子来查询作业是还是不是施行到位,然后Oozie
Server以JSON格式的字符串重返该JobID相关的实施结果,那种景色有五个难点:一同步的HTTP轮询格局,效能低下,耦合严重;
贰需求团结解析JSON,管理分外情形(比方,实践破产的作业Json字符串中的EndTime字段为null)

而以往引入ActiveMQ后,异步获取音讯,查询作业的实施结果变得尤其轻易了。而且还足以运用Oozie提供的片段进一步高等的天性了。举个例子:SLA(Service
Level Agreement)

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图