Flume 没有选择我的 JMS 绑定文件
Flume is not picking my JMS binding file
我正在尝试设置一个 flume 代理,它使用 JMS 作为源并使用 HDFS 作为接收器。
我遵循的步骤是
1)
创建了一个 .binding 文件
```
git clone https://github.com/ibm-messaging/mq-docker.git
docker volume create qm1data
docker run \
--env LICENSE=accept \
--env MQ_QMGR_NAME=QM1 \
--publish 1414:1414 \
--publish 9443:9443 \
--volume mqvol:/tmp/mq --detach mq
转到/opt/mqm/java/bin/JMSAdmin ->
DEFINE QCF(confact) QMGR(QM1) tran(client) chan(DEV.ADMIN.SVRCONN) host(10.2.201.80) port(1414)
DEFINE Q(DEV.QUEUE.1) QUEUE(DEV.QUEUE.1) QMGR(QM1)
end
```
2) 使用以下有用的 link how to use .binding file for JMS to HDFS
将相关的 jar 和 .binding 文件放置到位
3)启动flume代理只得到如下错误信息
org.apache.flume.FlumeException: Could not lookup ConnectionFactory
at org.apache.flume.source.jms.JMSSource.doConfigure(JMSSource.java:233)
at org.apache.flume.source.BasicSourceSemantics.configure(BasicSourceSemantics.java:65)
at org.apache.flume.source.AbstractPollableSource.configure(AbstractPollableSource.java:65)
at org.apache.flume.conf.Configurables.configure(Configurables.java:41)
at org.apache.flume.node.AbstractConfigurationProvider.loadSources(AbstractConfigurationProvider.java:326)
at org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:101)
at org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:141)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access1(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.naming.NameNotFoundException: confact
at com.sun.jndi.fscontext.RefFSContext.getObjectFromBindings(RefFSContext.java:400)
at com.sun.jndi.fscontext.RefFSContext.lookupObject(RefFSContext.java:327)
at com.sun.jndi.fscontext.RefFSContext.lookup(RefFSContext.java:146)
at com.sun.jndi.fscontext.FSContext.lookup(FSContext.java:127)
at javax.naming.InitialContext.lookup(InitialContext.java:411)
at org.apache.flume.source.jms.JMSSource.doConfigure(JMSSource.java:231)
其中 confact
是我创建的工厂。
绑定文件看起来类似于
cat /var/lib/flume-ng/plugins.d/ibmmqjms/jndi/.binding|head -10
#This file is used by the JNDI FSContext.
#Sun Feb 18 13:41:26 UTC 2018
confact/RefAddr/30/Encoding=String
confact/RefAddr/19/Content=unspecified
confact/RefAddr/26/Content=1
confact/RefAddr/33/Content=0
confact/RefAddr/70/Content=443
confact/RefAddr/15/Content=false
confact/RefAddr/22/Content=1
confact/RefAddr/102/Type=XMSC_CONNECTION_TYPE
我怀疑 JNDI 绑定由于某种原因没有发生。
感谢任何帮助。
谢谢
..玛纳斯
问题是绑定文件名应该被称为 .bindings
而不是 .binding
我正在尝试设置一个 flume 代理,它使用 JMS 作为源并使用 HDFS 作为接收器。
我遵循的步骤是
1)
创建了一个 .binding 文件```
git clone https://github.com/ibm-messaging/mq-docker.git
docker volume create qm1data
docker run \
--env LICENSE=accept \
--env MQ_QMGR_NAME=QM1 \
--publish 1414:1414 \
--publish 9443:9443 \
--volume mqvol:/tmp/mq --detach mq
转到/opt/mqm/java/bin/JMSAdmin ->
DEFINE QCF(confact) QMGR(QM1) tran(client) chan(DEV.ADMIN.SVRCONN) host(10.2.201.80) port(1414)
DEFINE Q(DEV.QUEUE.1) QUEUE(DEV.QUEUE.1) QMGR(QM1)
end
```
2) 使用以下有用的 link how to use .binding file for JMS to HDFS
将相关的 jar 和 .binding 文件放置到位3)启动flume代理只得到如下错误信息
org.apache.flume.FlumeException: Could not lookup ConnectionFactory
at org.apache.flume.source.jms.JMSSource.doConfigure(JMSSource.java:233)
at org.apache.flume.source.BasicSourceSemantics.configure(BasicSourceSemantics.java:65)
at org.apache.flume.source.AbstractPollableSource.configure(AbstractPollableSource.java:65)
at org.apache.flume.conf.Configurables.configure(Configurables.java:41)
at org.apache.flume.node.AbstractConfigurationProvider.loadSources(AbstractConfigurationProvider.java:326)
at org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:101)
at org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:141)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access1(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.naming.NameNotFoundException: confact
at com.sun.jndi.fscontext.RefFSContext.getObjectFromBindings(RefFSContext.java:400)
at com.sun.jndi.fscontext.RefFSContext.lookupObject(RefFSContext.java:327)
at com.sun.jndi.fscontext.RefFSContext.lookup(RefFSContext.java:146)
at com.sun.jndi.fscontext.FSContext.lookup(FSContext.java:127)
at javax.naming.InitialContext.lookup(InitialContext.java:411)
at org.apache.flume.source.jms.JMSSource.doConfigure(JMSSource.java:231)
其中 confact
是我创建的工厂。
绑定文件看起来类似于
cat /var/lib/flume-ng/plugins.d/ibmmqjms/jndi/.binding|head -10
#This file is used by the JNDI FSContext.
#Sun Feb 18 13:41:26 UTC 2018
confact/RefAddr/30/Encoding=String
confact/RefAddr/19/Content=unspecified
confact/RefAddr/26/Content=1
confact/RefAddr/33/Content=0
confact/RefAddr/70/Content=443
confact/RefAddr/15/Content=false
confact/RefAddr/22/Content=1
confact/RefAddr/102/Type=XMSC_CONNECTION_TYPE
我怀疑 JNDI 绑定由于某种原因没有发生。 感谢任何帮助。
谢谢 ..玛纳斯
问题是绑定文件名应该被称为 .bindings
而不是 .binding