如何集成 jms 主题以提供 Storm spout
How to integrate jms topic to feed Storm spout
我有一个 ActiveMQ 主题提供程序。我需要将从该主题接收到的数据提供给 Storm 主题。有什么办法可以直接做到这一点,或者我应该创建中间队列并将主题数据输入队列,然后将数据拉入喷口。哪个是最好的选择?
我浏览了 ptgoetz 的 Storm JMS Examples 并提出了一个解决方案,可以将主题数据直接提供给 spout。
需要在jms中指定主题-activemq.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
<amq:topic id="topic" physicalName="myTopic" />
<amq:connectionFactory id="jmsConnectionFactory"
brokerURL="tcp://localhost:61616" />
</beans>
然后我们可以在 session.AUTO_ACKNOWLEDGE
中使用 Jms Acknowledge Mode 像下面这样创建 JmsSpout
JmsProvider jmsTopicProvider = new SpringJmsProvider("jms-activemq.xml", "jmsConnectionFactory", "topic");
JmsTupleProducer producer = new JsonTupleProducer();
JmsSpout topicSpout = new JmsSpout();
topicSpout.setJmsProvider(jmsTopicProvider);
topicSpout.setJmsTupleProducer(producer);
topicSpout.setJmsAcknowledgeMode(Session.AUTO_ACKNOWLEDGE);
topicSpout.setDistributed(false);
我有一个 ActiveMQ 主题提供程序。我需要将从该主题接收到的数据提供给 Storm 主题。有什么办法可以直接做到这一点,或者我应该创建中间队列并将主题数据输入队列,然后将数据拉入喷口。哪个是最好的选择?
我浏览了 ptgoetz 的 Storm JMS Examples 并提出了一个解决方案,可以将主题数据直接提供给 spout。
需要在jms中指定主题-activemq.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
<amq:topic id="topic" physicalName="myTopic" />
<amq:connectionFactory id="jmsConnectionFactory"
brokerURL="tcp://localhost:61616" />
</beans>
然后我们可以在 session.AUTO_ACKNOWLEDGE
中使用 Jms Acknowledge Mode 像下面这样创建 JmsSpoutJmsProvider jmsTopicProvider = new SpringJmsProvider("jms-activemq.xml", "jmsConnectionFactory", "topic");
JmsTupleProducer producer = new JsonTupleProducer();
JmsSpout topicSpout = new JmsSpout();
topicSpout.setJmsProvider(jmsTopicProvider);
topicSpout.setJmsTupleProducer(producer);
topicSpout.setJmsAcknowledgeMode(Session.AUTO_ACKNOWLEDGE);
topicSpout.setDistributed(false);