0

を使用して、Activemqキュー名からメッセージを消費するための 3 つのコンシューマーを作成します。ThermalMapApache Camel and Spring

からSpring特定の beanId("amqLinkId") 値を取得しようとしましたbean.xml。このために、次の 3 つのファイルを作成しました。

変数Declarations.java

public class VariablesDeclarations {
private String amqLink;
public String getAmqLink() {
return amqLink;
}
public void setAmqLink(String amqLink) {
this.amqLink = amqLink;
}
}

FirstConsumer.java

import org.apache.camel.CamelContext;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class FirstConsumer {
        public static void main(String[] args) {
     ApplicationContext contextObject=new ClassPathXmlApplicationContext("bean.xml");
        //Forwarding cursor to ConsumersMiddileWare class using CamelContext
        CamelContext camelObject=contextObject.getBean("activeContext", CamelContext.class);
        System.out.println("H");
}
} 

ConsumersMiddileware.java

import org.apache.camel.builder.RouteBuilder;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ConsumersMiddileWare extends RouteBuilder{
@Override
public void configure() throws Exception {
    System.out.println("Bye");
    BeanFactory beanFactory=new ClassPathXmlApplicationContext(new String[]{"bean.xml"});
    VariablesDeclarations vd=(VariablesDeclarations) beanFactory.getBean("amqLinkId");
    System.out.println(vd.getAmqLink());
}
 }

bean.xml :

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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.xsd
                    http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
                    http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.5.0.xsd
                    ">

<!-- Creating camelContext element for forwarding to another ConsumersMiddileware class -->
<camelContext id="activeContext" xmlns="http://camel.apache.org/schema/spring">
    <routeBuilder ref="consumerMiddileWareContext" />
</camelContext>
<bean id="consumerMiddileWareContext" class="ActivemqPackage.ConsumersMiddileWare"></bean>

<!-- Following bean created for getting variable values into classes-->
<bean id="amqLinkId" class="ActivemqPackage.VariablesDeclarations">
    <property name="amqLink" value="activemq:queue:ThermalMap"></property>
</bean>
</beans>

ワークフロー:

を実行するFirstConsumer.javaと、転送する必要があります。そこから値を見つけて、任意のオブジェクトに割り当てConsumersMiddileWare.javaたいと思います。amqLinkIdbean.xmlString

値が見つかったらamqLinkId、後で直接次のコードを書きたいConsumersMiddileWare.java

  String activeMqURI=vd.getAmqLink();
  from( activeMqURI).to("bean:activemqProcessor?method=processMessage");

問題:

トリガーFirsrConsumer.javaすると、次のように値を出力せずに出力しConsumersMiddileWare.java続けます。ByeamqLinkId

 Bye
 Bye
 Bye
 Bye
 .
 .

誰でも明確に説明できますか。

ありがとう

4

2 に答える 2

1

問題は、プロジェクトが slf4j-simple-1.6.2.jar を見つけられないことです。プロジェクトのビルド パスに含まれているかどうかを確認します。追加されていない場合は、確認してください。また、あなたが報告した実際の問題と後で編集した問題は、まったく別の問題です。

于 2013-09-21T10:56:13.137 に答える