在我的体系结构中,每当发生变化时都会Activemq
收到消息。Sql Server Database
DB
我们编写了 3 个消费者文件名,FirstConsumer.java,SecondConsumer.java and ThirdConsumer.java
用于使用Spring
框架处理消息。
到目前为止,我们*MiddileWare.java
为每个消费者文件编写了文件。通过以下方式。
我的业务代码是用MessageProcessing.java
.for 您的理解编写的,我发布了firstConsumer.java
相应的文件代码。
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) {
try {
ApplicationContext contextObject=new ClassPathXmlApplicationContext("bean.xml");
//Forwarding cursor to ConsumersMiddileWare class using CamelContext
CamelContext camelObject=contextObject.getBean("activeContext1", CamelContext.class);
} catch (Exception e) {
// TODO: handle exception
}
}
}
FirstMiddleWare.java:
import org.apache.camel.spring.SpringRouteBuilder;
public class ConsumersMiddileWare2 extends SpringRouteBuilder {
@Override
public void configure() throws Exception {
VariablesDeclarations vd=lookup("amqURL",VariablesDeclarations.class);
from(vd.getAmqLink()).transacted().to("bean:msgPro1?Method=Processor1");
}
}
消息处理.java:
import org.apache.camel.Exchange;
public class MessageProcessing{
public void MessageProcessing(Exchange exe,String exeFilepath) {
//Business Code Here
}
public void Processor1(Exchange exe) {
MessageProcessing processorObject=new MessageProcessing();
processorObject.MessageProcessing(exe,"Rod1");
}
public void Processor2(Exchange exe) {
MessageProcessing processorObject=new MessageProcessing();
processorObject.MessageProcessing(exe,"Rod2");
}
}
Spring 配置 xml 文件名bean.xml
与所有消费者配置一样。
bean.xml:
<!--FirstConsumer-->
<camelContext id="activeContext1" xmlns="http://camel.apache.org/schema/spring">
<routeBuilder ref="activeMQRouter1" />
</camelContext>
<!--SecondConsumer-->
<camelContext id="activeContext2" xmlns="http://camel.apache.org/schema/spring">
<routeBuilder ref="activeMQRouter2" />
</camelContext>
<!--ThirdConsumer-->
<camelContext id="activeContext3" xmlns="http://camel.apache.org/schema/spring">
<routeBuilder ref="activeMQRouter3" />
</camelContext>
<!--FirstConsumer-->
<bean id="activeMQRouter1" class="ActivemqPackage.FirstMiddileWare"/>
<!--SecondConsumer-->
<bean id="activeMQRouter2" class="ActivemqPackage.SecondMiddileWare"/>
<!--ThirdConsumer-->
<bean id="activeMQRouter3" class="ActivemqPackage.ThirdMiddileWare"/>
到目前为止,我们遵循上述方式。它工作正常。现在我正在尝试实现以下方式。
以下代码是 First、Second、Third Middileware 文件之间的差异代码。
SecondMiddleWare.java
from(vd.getAmqLink()).transacted().to("bean:msgPro1?Method=Processor2");
第三MiddleWare.java:
from(vd.getAmqLink()).transacted().to("bean:msgPro1?Method=Processor3");
我坚持ConsumerMiddileWare.java
为所有消费者文件制作文件。
如果你不明白,让我知道我会编辑我的问题。
我的想法:
如果我们将String
Consumer() 文件中的任何格式值发送FirstConsumer.java,...
到 MiddileWare(FirstMiddileWare.java,...)。
基于该值,我将调用相应的 process( Process1,..
) 方法。
谢谢