我的架构Activemq
在Sql Server Database
更改时从DB
收到邮件。
我们编写了3个消费者文件名FirstConsumer.java,SecondConsumer.java and ThirdConsumer.java
,用于使用Spring
框架处理邮件。
到目前为止,我们为每个消费者文件编写了*MiddileWare.java
个文件。按照以下方式。
我的商家代码是用MessageProcessing.java
编写的。为了您的理解,我发布了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
}
}
}
FirstMiddileWare.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");
}
}
MessageProcessing.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文件之间的差异代码。
SecondMiddileWare.java
from(vd.getAmqLink()).transacted().to("bean:msgPro1?Method=Processor2");
ThirdMiddileWare.java:
from(vd.getAmqLink()).transacted().to("bean:msgPro1?Method=Processor3");
我坚持为所有消费者文件制作ConsumerMiddileWare.java
文件。
如果你不明白,请告诉我,我会编辑我的问题。
我的想法:
如果我们从Consumer(String
)文件发送任何FirstConsumer.java,...
格式值到MiddileWare(FirstMiddileWare.java,...)。
根据该值,我将调用相应的进程(Process1,..
)方法。
由于
答案 0 :(得分:1)