场景:群里有小伙伴求助jms activemq如何使用kettle 进行消费数据,之前连接过kafka,rabbtimq,想着activemq应该也没啥难度,结果低估了activemq。盘他!!!
插曲:ActiveMq 有两个版本:ActiveMQ Classic和ActiveMQ Artemis两个版本,kettle 中的jms插件连接activemq只支持ActiveMQ Artemis,结果我没有看官方文档一直用kettle 连接ActiveMQ Classic。。。
1、ActiveMQ Artemis服务安装(windows环境)
1)从官方地址(https://activemq.apache.org/)进行下载,注意选择合适的版本和本地jdk的版本。
2)解压文件 依次执行如下命令即可启动ActiveMQ服务
cd path/to/apache-artemis-<version>/bin
artemis create mybroker
cd mybroker/bin
bin/artemis run
3)测试JMS producer生产者(queue模式),如下图所示:
4、通过生成记录步骤产生一条数据,message为{"name":"java小金刚"},如下图所示:
5、JMS producer设置,如下图所示:
Connection选择ActiveMQ
JMS URL设置为tcp://127.0.0.1:61616,通过tcp协议进行交互
Destination type:选择queue
Destination name:自定义设置,这里设置test
Message field:选择生成记录步骤中的输出字段message
6、保存&运行,数据正常写入activemq中间件,如下图所示:
7、测试JMS consumer消费者(queue模式),如下图所示:
8、JMS consumer设置(queue模式),如下图所示:
Transformation:设置子转换读取流数据,子转换使用到的步骤为Get records from stream
Connection选择ActiveMQ
JMS URL设置为tcp://127.0.0.1:61616,通过tcp协议进行交互
Destination type:选择queue
Destination name:和生产者保持一致,这里设置test
保存&运行,可以正常消费到数据
9、测试JMS producer生产者(topic模式),如下图所示:
Destination name:自定义设置,这里设置test.topic
10、保存&运行,数据可以正常写入activemq,如下图所示:
11、JMS consumer设置(topic模式),如下图所示:
Destination type:选择topic
Destination name:和生产者保持一致,这里设置test.topic
保存&运行,可以正常消费到数据
注意:在测试的时候先启动JMS consumer,然后使用JMS producer 推送数据。
12、activemq 使用amqp协议进行连接,调整url为amqp://127.0.0.1:5672,从错误信息来看kettle原生步骤不支持amqp协议,如下图所示: