我正在创建一个talend作业,这将允许我从JMS队列中获取消息。为此,我尝试在talend中配置tJMSInput组件以侦听消息代理队列。
当我尝试运行创建的作业时,我收到以下错误:
`Démarrage du job sauvegarde a 16:23 21/07/2015`.
[statistics] connecting to socket on port 3805
[statistics] connected
[main] WARN org.wso2.andes.jndi.PropertiesFileInitialContextFactory - Unable to load property file specified in Provider_URL:amqp://admin:admin@clientID:carbon?brokerlist='tcp://localhost:5682'
Due to:amqp:\admin:admin@clientID:carbon?brokerlist='tcp:\localhost:5682' (La syntaxe du nom de fichier, de répertoire ou de volume est incorrecte)
组件tJMSInput_1中的异常
javax.naming.NameNotFoundException: myQueueConnectionFactory
at org.wso2.andes.jndi.ReadOnlyContext.lookup(ReadOnlyContext.java:271)
at javax.naming.InitialContext.lookup(Unknown Source)
at output_agent.sauvegarde_0_1.sauvegarde.tJMSInput_1Process(sauvegarde.java:882)
at output_agent.sauvegarde_0_1.sauvegarde.tLibraryLoad_2Process(sauvegarde.java:641)
at output_agent.sauvegarde_0_1.sauvegarde.tInitLog4J_1Process(sauvegarde.java:538)
at
output_agent.sauvegarde_0_1.sauvegarde.tPrejob_1Process(sauvegarde.java:410)
at
output_agent.sauvegarde_0_1.sauvegarde.runJobInTOS(sauvegarde.java:1259)
at output_agent.sauvegarde_0_1.sauvegarde.main(sauvegarde.java:1118)
[statistics] disconnected
Job sauvegarde terminé à 16:23 21/07/2015. [Code sortie=1]`
我不知道它是来自URL格式还是连接工厂名称,我已经尝试使用ActiveMQ队列并且它运行良好。消息代理队列中唯一发生变化的是url。
任何人都可以帮助我。
答案 0 :(得分:0)
我发现了问题。
qpid上下文工厂org.wso2.andes.jndi.PropertiesFileInitialContextFactory
不使用与activeMQ上下文工厂org.apache.activemq.jndi.ActiveMQInitialContextFactory
相同的字段。
虽然ActiveMQ允许您不使用带Talend的单独属性文件,但Qpid却没有。
Talend配置
在tJMSInput之前,您必须使用 tLibraryLoad 组件加载 geronimo-jms_1.1_spec-X.X.X.wso2vX.jar 库。
Talend tJMSInput配置:
<强> myfile.properties:强>
connectionfactory.qpidConnectionfactory = amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5682'
queue.myQueue= myQueue
参考:Qpid Wiki